10

空の新しいクラス ライブラリの Visual Studio 2012 で、ソリューション内の既存のプロジェクトへの参照を追加しようとしていますが、クラス ライブラリ、MonoGame.Framework.Windows8 ( https://github.com/mono/MonoGame ) も取得しますエラー:

プロジェクト MonoGame.Framework.Windows8 への参照を追加できません

既存のライブラリである MonoGame を正常にビルドし、新しいライブラリの依存関係にしました。何が問題なのですか?

(エラー メッセージに理由が表示されないのは非常に厄介です!)

4

4 に答える 4

11

ビルドされた dll に参照を追加しようとすると、より明確なエラー メッセージが表示され、問題が解決しました。

「「x」への参照を追加できませんでした。プロジェクトは「.NetFramework」をターゲットにし、ファイル参照は「.NetCore」をターゲットにします。これはサポートされているシナリオではありません」</p>

MonoGame クラス ライブラリは、クラス ライブラリ (Windows ストア アプリ) の一種です。(括弧内のビットは重要です!おそらく違いは、.Net Framework と同じではない .Net Core を使用する Windows ストア アプリの種類です)。

したがって、それを機能させるには、プロジェクトをクラス ライブラリ (Windows ストア アプリ) にする必要があります。これは、[新しいプロジェクトの追加] の [Windows ストア] オプションで利用できます。

于 2012-12-13T01:06:25.283 に答える
7

問題は、プロジェクト オプションの「ターゲット フレームワーク」に関係していると思われます。

MonoGame が Windows 8 でどのように機能するかはわかりませんが、Android 向けに開発している場合、ターゲット フレームワークのオプションは Android のさまざまなバージョンです [例: Android 2.2 (Froyo)]。通常のクラス ライブラリを作成する場合、さまざまなバージョンの .NET フレームワークまたは Mono [Mono / .NET 4.0 など] から選択できます。

残念ながら、これらのフレームワークは相互に互換性がありません。Android のプロジェクト参照を .NET Framework クラス ライブラリに追加することはできません。また、その逆もできません。

解決策は、 Portable Class Libraryを使用することです。これらは、この問題に対処するために特別に設計されています。欠点は、ターゲットとして選択した最小分母で提供されるアセンブリのサブセットにしかアクセスできないことです。

リンクされたファイルを使用して、プロジェクト間でコードを共有することも検討してください。メンテナンスが少し面倒になる可能性がありますが、両方のターゲット フレームワークでコンパイルする必要があるが、ポータブル クラス ライブラリには適合しないコードをより細かく制御できます。関連する質問は次のとおりです。

Mono マルチターゲット プロジェクトでのプロジェクト参照とファイル リンク

ここで何が起こっているのかを理解したら、これらすべての鍵となるのは、ソリューションをどのように構築するかです。少し注意すれば、ほぼすべてのコードを異なるプラットフォーム間で共有できます。

于 2012-12-12T10:51:43.117 に答える
1

私がここで推測する同じ質問: Visual Studio 11メトロアプリは参照を追加できませんか?

答えは:

何への参照を追加していますか?Metroスタイルアプリは、他のMetroスタイルクラスライブラリまたはポータブルクラスライブラリへの参照のみを追加できます

于 2012-12-12T04:48:06.010 に答える