web-dev-qa-db-ja.com

ファイルまたはアセンブリ「System、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e089」またはその依存関係の1つをロードできませんでした

一部のユーザーマシンでこの例外が生成されます(20分の1):

ファイルまたはアセンブリ 'System、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e089'またはその依存関係の1つをロードできませんでした。システムは、指定されたファイルを見つけることができません。

私はウェブとこのサイトでこのエラーへの参照をいくつか見つけましたが、何も助けませんでした。

WCFを使用してサーバーに接続するアドインアプリケーションがあります。 VS 2008の.NET Framework 3.5で構築されたアドイン。

エラーは、1つのユーザーアカウントのテストマシンの1つで再現可能です。私は自分のアプリケーションをインストールしますが、これはこのマシンの1つのアカウントからのみ再現できます。さらに、アドインを作成したホストアプリケーションの1つのバージョンでのみ再現可能です(differnet .NET Frameworkを使用しているためです)。

Fuseログを確認しましたが、次のように表示されます。


Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll
Running under executable  C:\Program Files\SolidWorks Corp\SolidWorks\sldworks.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = Home\User
LOG: DisplayName = System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
 (Fully-specified)
LOG: Appbase = file:///C:/Program Files/SolidWorks Corp/SolidWorks/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = NULL
Calling Assembly : System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.

そのため、何らかの理由でv2.0.50727\mscorwks.dllローダーを使用して、System.dllのVersion = 4.0.0.0をロードしようとしています。ビルドマシンでは、2.0.0.0バージョンのSystem.dllを参照しています

どんな助けも大歓迎です。

ありがとう、アルテム

30
Tema T.

私はこれと同じ問題を抱えていました-一部のユーザーはgitからプルでき、すべてが正常に実行されました。いくつかは非常に似た例外を引き出して取得します:

ファイルまたはアセンブリ '...、Version = ...、Culture = neutral、PublicKeyToken = ...'またはその依存関係の1つをロードできませんでした。システムは、指定されたファイルを見つけることができません。

私の特定のケースではAjaxMinであったため、実際のエラーは次のようになりましたが、詳細は関係ありません。

ファイルまたはアセンブリ 'AjaxMin、Version = 4.95.4924.12383、Culture = neutral、PublicKeyToken = 21ef50ce11b5d80f'またはその依存関係の1つをロードできませんでした。システムは、指定されたファイルを見つけることができません。

ソリューションに対する次のアクションの結果であることが判明しました。

  1. ソリューションのNuGetパッケージの復元がオンになりました。

  2. プロジェクトが追加され、Nugetパッケージがプロジェクトにインストールされました(この場合はAjaxMin)。

  3. プロジェクトはソリューション内の別のフォルダーに移動されました。

  4. Nugetパッケージが新しいバージョンに更新されました。

そして、ゆっくりと、しかし確実に、このバグは一部のユーザーに現れ始めました。

その理由は、ソリューションレベルのpackages/respositories.configが古いプロジェクト参照を保持していたため、移動したプロジェクトの新しい2番目のエントリがあったためです。言い換えると、再編成前にこれがあった:

  <repository path="..\Old\packages.config" />

そして、再編成後のこれ:

  <repository path="..\Old\packages.config" />
  <repository path="..\New\packages.config" />

したがって、最初の行は、ディスク上ではもはや私のソリューションの一部ではないであるプロジェクトを参照しています。

Nuget Package Restoreをオンにすると、packages.configファイルの両方が読み取られ、それぞれがNugetパッケージとパッケージバージョンの独自のリストを指していました。ただし、Nugetパッケージが新しいバージョンに更新されるまで、競合はありませんでした。

ただし、Nugetパッケージが更新されると、アクティブなプロジェクトのリポジトリリストのみが更新されます。 NuGet Package Restoreは、ライブラリの1つのバージョン(repositories.configで最初に見つかった古いバージョン)のみをダウンロードすることを選択しました。コンパイラとIDEは、新しい方を選択したかのように進みました。結果は、DLLが欠落しているというランタイム例外です。

答えは明らかに、ソリューションにないプロジェクトを参照したこのファイルから行を削除することです。

5
Chris Moschini

プロジェクトを.net 4.5から.net 3.5にダウングレードした後に取得しました。

解決するには、プロジェクト-プロパティ-設定ウィンドウに移動してすべての設定を削除し、プロジェクトを保存し、Visual Studioを終了して再起動し、プロジェクト-プロパティ-設定ウィンドウに戻り、すべての設定とデフォルトを再入力する必要がありました値

2
Rob

.net 4を使用していますか? -クライアントに「.net framework 4 client profile」のみがインストールされている可能性があります。フルパッケージをインストールしてみてください!! ここからダウンロード

1
Cadburry

これは私のために働いた。 [プロジェクト]-> [プロパティ]-> [ターゲットフレームワーク]-> 3.5から4.0などのフレームワークの変更に移動します。

0
user3493436

私は答えが遅すぎましたが、私の場合はうまくいきました。プロジェクトでこの問題に直面している場合は、web.configに次の行を追加してください:

<compilation  batch="false" >

これは私の場合はうまくいきました。 web.configに既にコンパイルタグがある場合は、batch = "false"プロパティのみを追加します。

0
killer

もっと奇妙なことを経験したことがありますが、GACにはDLLのロード元のDLLはありませんが、windows> Moduleはsystem.dll version = 4.0.0.0 loadedと表示されます

0
Rajnish

Linuxで問題が発生したため、それらをインストールする必要がありました。どちらが実際に問題を解決したのかわかりませんが、その後そのエラーはなくなりました。

apt-get install mono-utils mono-runtime-sgen mono-runtime-common \
                mono-runtime-boehm mono-runtime-dbg mono-xbuild
0
Alexis Wilke

NuGetパッケージを有効にして、dllを更新できます。動作するように。または、ソリューションに必要なバージョンがわかっている場合は、vsのパッケージマネージャーを使用してパッケージを手動で更新できます。

0
Rizwan

私はこれを数回見てきましたが、通常は.NET Framework(アプリケーションが使用しようとしているバージョン)で修復を実行することで修正されます。

0
JoeKreydt

私の場合、web.configファイルでDebug = trueを設定することでScriptManagerの問題を見つけることができました。

0
Sofia Khwaja