web-dev-qa-db-ja.com

不明なビルドエラーSystem.Windowsへの依存関係を解決できません

私は PoshConsole のソースコードをダウンロードし、ソリューションを構築しようとしていました。私は最初に2つの問題を抱えていました-

  1. system.Interactivity.dllを解決できませんでした。 Blend 4 SDKをインストールし、その問題を修正しました。

  2. 不明なビルドエラー-System.Windowsへの依存関係を解決できません

現在、プロジェクトをビルドしようとすると、ソリューションの2つのプロジェクトで次のエラーが発生し、グーグルで検索しても解決策を見つけることができません。

アセンブリ 'System.Windows、Version = 2.0.5.0、Culture = neutral、PublicKeyToken = 7cec85d7bea7798e'への依存関係を解決できません。プリロードされていないためです。 ReflectionOnly APIを使用する場合、依存アセンブリは、ReflectionOnlyAssemblyResolveイベントを通じてオンデマンドでプリロードまたはロードする必要があります。

39
gprasant

別の(GAC以外のカスタム)アセンブリに対してこのエラーメッセージが表示されました。

私の場合、状況は次のとおりです。

  • アセンブリXにはクラスAが含まれています
  • アセンブリYには、Aから継承するクラスBが含まれています
  • アセンブリZには、クラスBの データテンプレート が含まれています

YはXを参照し、ZはYを参照しました。

エラーメッセージは、Bが参照されているZのデータテンプレートの行を指しており、Xをロードできないことを示していました。

解決策は、ZにもXを参照させることでした。コンパイラは、必要なアセンブリを独自にロードするための推移的な参照を解決できません。

51
O. R. Mapper

このエラーは通常、WPFプロジェクト内にSilverlightアセンブリへの参照を追加したことを意味します-2つは共存できません。

参照: WPFアプリケーションからSilverlightクラスライブラリを参照するときのエラー

18
Chris Hines

O。R. Mapper の回答に加えて、コンパイラエラーによって示されるアセンブリへの参照を追加することを提案する情報を追加したいと思います。

WPFプロジェクトでの作業中に同じ問題が発生しました。彼の回答で示されたX、Y、Z関係を考えると、Xの型を持つプロパティをYのDataTemplateDataTypeにバインドすると問題が発生します。したがって、これはすべての場合に発生するわけではありませんZによって参照されるアセンブリではなく、ビュー内で特定のタイプのみを公開するアセンブリ。私の場合、SelectedItemComboBoxをXで宣言されたenumプロパティにバインドしていました。

これらの型をオブジェクトにリファクタリングすることができ、特にMVVMを使用する場合に、参照を本当に維持したい場合は問題がなくなります。さらに、モデルタイプをViewModelタイプに適切にラップすると、Visual Studioが必要なアセンブリを理解するのに役立つ明示的なコードが生成されるため、問題は自然に解消します。

お役に立てれば。

1
MatrixRonny

[projectName] .csprojファイルで、解決できない依存関係を特定して削除してから、後で再度追加できます。

  • これは私のエラーでした:v4.0.30319\Microsoft.WinFx.targets(268,9):error MC1000:Unknown build error、 'Cannot resolve dependency to Assembly' Microsoft.Data.Schema '、... =
  • 私の.csprojファイルで、キー「Word.Microsoft.Data.Schema」で参照行を特定しました
  • 行を削除したところ、プロジェクトを再度ビルドできました。

他の人の役に立つことを願っています

1
Gomez NL

誰かが同じ問題に遭遇した場合に備えて、私はこの古い質問を投げて答えます。

私は最近、レガシープログラムに取り組んでいて、このエラーが発生しました。解決策はすぐにはわかりませんでした。

問題

参照されているNuGetパッケージの1つは、一連の内部ライブラリ用に作成され、内部のNuGetリポジトリに保存されています。

すべてのNuGet参照がプロジェクトファイルにあり、ライブラリに直接アクセスするため、アプリケーションはVS2013で問題なくコンパイルされました。

これらの参照が(HintPathをサポートしない)に変更されたとき、これらのNuGetパッケージの多くはnuspecに従って作成されませんでした。 libフォルダーがありませんでした。

パッケージは仕様に従って再作成されましたが、一部のパッケージには古いSilverlightライブラリが含まれていました。これらのライブラリがエラーの原因でした。

ソリューション

nuspecに続いて、libフォルダーにサブフォルダーが作成されました:net45およびsl4。 .NET4.5およびSilverlight4.0。

パッケージが新しいパッケージに置き換えられたとき、ビルドは正常に機能しました。プロジェクトファイルのバージョンに関係なく。

TL; DR

古いnupkg構造:

Package.1.0.0.nupkg
   - Library.Net40.dll
   - Library.Sl4.dll

新しいnupkg構造:

Package.1.0.1.nupkg
    - lib
        - net45
            - Library.dll
        - sl4.0
            - Library.dll
0
Victor Procure