web-dev-qa-db-ja.com

検出されたアセンブリのマニフェスト定義は、アセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)

サードパーティのアセンブリに署名してGACに追加すると、次のエラーが表示されます。また、アセンブリバインダーログエントリに このエラー と表示されます

アセンブリの不一致は、すべてのobjとbin foldを削除してバッチを作成し、dllを再インポートしてバッチを作成したため、どのようにミストナッキングがわからないかを示しています。

 Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\11.0\WebDev.WebServer40.exe

--- A detailed error log follows. 
=== Pre-bind state information ===
LOG: User = AKBARCA\user

LOG: DisplayName = ClubStarterKit.Core, Version=3.0.1.0, Culture=neutral, PublicKeyToken=null
 (Fully-specified)

LOG: Appbase = 

file:///C:/Users/user/Desktop/NhibernateMediumTrust/NhibernateMediumUpgrade/direct/clubstar

terkit v3 preview/ClubStarterKit.Web/

LOG: DEVPATH = C:\ProgramData\Red Gate\.NET Reflector\DevPath

LOG: Initial PrivatePath = 

C:\Users\user\Desktop\NhibernateMediumTrust\NhibernateMediumUpgrade\direct\clubstarterkit v3 preview\ClubStarterKit.Web\bin
Calling Assembly : ClubStarterKit.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
13
lioni jordan

私の経験から、これは通常、アプリを公開してから、異なるバージョンのnugetパッケージを使用しているときに発生します。これがあなたの状況でもある場合、それを修正するために私が見つけた最良の方法はsolution(個々のプロジェクトではない)を右クリックし、「Nugetパッケージの管理」を選択することです。次に、インストールされているパッケージで問題のアセンブリを見つけます。おそらく複数回表示されるでしょう。パッケージの古いバージョンのそれぞれで[管理]をクリックし、すべてのプロジェクトのチェックを外します。パッケージの最新バージョンのみがリストに残ります。これで[管理]をクリックし、パッケージを必要とするプロジェクトを再確認します。これにより、基本的にすべて同じバージョンのパッケージを使用するようにアップグレードされ、不一致エラーが解決されます。

31
Chris Pratt

同様の問題に直面しました。私の場合、ソリューションに複数のプロジェクトがありました。

プロジェクトの1つはEntityFramework 4.0を参照しており、そのプロジェクトはEntityFramework 5.0を参照していた別のプロジェクトで参照されていました。私はそれらを同期させ、問題は解決しました。

5
Brij

ふむ...私は同じエラーメッセージで似たようなものに直面しました。

私の場合、アセンブリのバージョンを手動で更新しました。

The error message

参照アセンブリには、別のバージョンがありました...

そのため、web.configで更新しました。

Properies of the DLL

これで問題が解決しました。

きみの === Pre-bind state information ===は不完全なようです。通常、実行を示し、最後の行はエラーを示します。そのため、経験を共有することしかできません。例: Last line of the LOG info

この問題に直面している他の誰かがこれが役立つことを願っています。

3
Lincoln Pires

私の場合、エラーはweb.configの<bindingRedirect>依存アセンブリ(例:Newtonsoft.Json)が、実際にbinフォルダーにあるバージョンと一致しません。 web.configのバージョン番号が更新されると、問題は修正されます。

screenshot of web.config

2
C. Deng

過去にこの問題が発生したとき、プロジェクトのすべてのdllをgacから削除し、ソリューションを再構築してからiisresetを実行して解決しました。

1
bresleveloper

私には別の原因がありました。私の場合、以前にさまざまなバージョンのナゲットパッケージを使用していましたが、app.config何らかの理由でこの種類のコンテンツで自動的に生成されたもの:

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.1.1.0" newVersion="1.1.1.0" />
  </dependentAssembly>

したがって、バージョン1.1.0.0のみがインストールされていましたが、このリダイレクト命令により、Visual Studioに1.1.0.0のnugetがインストールされていても、1.1.1.0を探しました。 newVersionを1.1.0.0に変更すると、すべてが修正されました。

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.1.1.0" newVersion="1.1.0.0" />
  </dependentAssembly>
0
iJungleBoy

FASTjsonを使用してこのエラーが発生しました。

_jsonConfig = fastJSON.JSON.ToObject<jsonConfig>(jsonConfigFileContents);

次の行で失敗しました:

Type t = Type.GetType(typename);

System.RuntimeTypeHandle.GetTypeByNameで例外が発生します


問題は、JSONオブジェクトモデルと比較したJSONファイルの違いでした。

解決策は、JSONオブジェクトモデルをファイルにre-saveすることです。例:

string jsonSettings = fastJSON.JSON.ToJSON(JSONObjectModel);
File.WriteAllText(JSONFilePath, jsonSettings);
0
Jeremy Thompson

これを解決する1つの方法は、ソリューションエクスプローラーで右クリックして[ソリューションのNuGetパッケージの管理]に移動することです。そこで、「統合」に進み、問題の原因となっているパッケージを見つけます。ソリューション内のすべてのプロジェクトが同じバージョンを使用していることを確認してください。

enter image description here

0
Mauro Bilotti