見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません


751

C#Windowsフォームアプリケーション(Visual Studio 2005)でいくつかの単体テストを実行しようとすると、次のエラーが発生します。

System.IO.FileLoadException:ファイルまたはアセンブリ 'Utility、Version = 1.2.0.200、Culture = neutral、PublicKeyToken = 764d581291d764f7'またはその依存関係の1つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULTからの例外:0x80131040)**

x.Foo.FooGO()で

Foo.cs:line 123のx.Foo.Foo2(String groupName_)で

FooTests.cs:line 98 **のx.Foo.UnitTests.FooTests.TestFoo()で

System.IO.FileLoadException:ファイルまたはアセンブリ 'Utility、Version = 1.2.0.203、Culture = neutral、PublicKeyToken = 764d581291d764f7'またはその依存関係の1つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULTからの例外:0x80131040)

私は自分の参照を調べて、参照しているのはUtility version 1.2.0.203(もう1つは古い)だけです。

このDLLファイルのこの古いバージョンを参照しようとしているものを理解する方法に関する提案はありますか?

それに、私はこの古いアセンブリをハードドライブに持っているとは思えません。この古いバージョンのアセンブリを検索するツールはありますか?


私の場合、これは、2つのプロジェクトが異なるバージョンの同じDLLをロードしていたために発生しました。(これが誰かを助けることを願っています!)
miguelmpn

回答:


461

.NETアセンブリローダー:

  • 1.2.0.203が見つかりません
  • 1.2.0.200を見つけました

このアセンブリは要求されたものと一致しないため、このエラーが発生します。

簡単に言えば、参照されたアセンブリを見つけることができません。GACまたはアプリケーションパスに配置して、適切なアセンブリを見つけられることを確認してください。https://docs.microsoft.com/archive/blogs/junfeng/the-located-assemblys-manifest-definition-with-name-xxx-dll-does-not-match-the-assembly-referenceも参照してください


19
しかし、プロジェクトの参照を見ると、それは1.2.0.203を指しています。1.2.0.200を指しているものはもうないようです
leora 08年

128
まさに-1.2.0.203を探していますが、1.2.0.200を見つけました。そのファイルの場所を確認し、適切なバージョンに置き換えます。
Jon Skeet、

18
私はここに同様の質問をし、作業溶液を得た:stackoverflow.com/questions/4187907/...
マイケル・ラVoie

13
参照バージョンを確認し、packages.configとWeb.configで同じかどうかを確認します
zdarsky.peter 2014年

4
このメッセージは毎回私を混乱させます。逆に書かれているようです。見つけたバージョンではなく、ロードを要求したバージョンについて不平を言うと思います。間違っているのは私だけではありません。
グレッグウッズ

91

この問題のトラブルシューティングを行うには、いくつかの方法があります。まず、Windowsファイル検索を使用して、ハードドライブでアセンブリ(.dll)を検索します。結果のリストを取得したら、[表示]> [詳細の選択...]を実行して、[ファイルバージョン]を確認します。これにより、結果のリストにバージョン番号が表示されるので、古いバージョンがどこから来ているのかを確認できます。

また、ラースが言ったように、GACをチェックして、そこにリストされているバージョンを確認してください。このMicrosoftの記事では、GACで見つかったアセンブリはビルド中にローカルにコピーされないため、すべてを再ビルドする前に古いバージョンを削除する必要がある場合があります。(これを行うバッチファイルを作成する際の注意事項については、この質問に対する私の回答を参照してください)

それでも古いバージョンがどこから来ているのかわからない場合は、Visual Studioに付属のfuslogvw.exeアプリケーションを使用して、バインディングの失敗に関する詳細情報を取得できます。Microsoftはこのツールに関する情報をここに持っていますHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion\EnableLogレジストリキーを1に設定してログを有効にする必要があることに注意してください。


19
ファイルバージョンはアセンブリIDの一部ではないことを忘れないでください。アセンブリバージョンはファイルバージョンと同じですが、同じである必要はありません。
Lars Truijens、2011

サービスにfuslogvwを使用する場合は、blogs.msdn.com / b / junfeng / archive / 2004/02/14 / 72912.aspx
Nick

ファイル名を検索すると問題が解決しました。Temporary ASP.Netフォルダーに古いバージョンのdllがあり、InstallShieldは最新バージョンの代わりにそれを使用していました。ソリューションのクリーン、再構築、PCの再起動は何もしませんでした。ローカルで正常に動作し、展開されるたびに爆発しました。
JumpingJezza

構築直後は私のサイトは問題なく動作していますが、しばらくするとこの問題が発生します。
Shavais 2017

この回答を編集して、代わりにアセンブリバージョンと言いました。
Worthy7

60

自分でこの問題に遭遇したところ、他の人が遭遇した問題とは異なる問題であることがわかりました。

メインプロジェクトが参照しているDLLが2つありました。CompanyClasses.dllとCompanyControls.dllです。次のようなランタイムエラーが発生しました。

ファイルまたはアセンブリ 'CompanyClasses、Version = 1.4.1.0、Culture = neutral、PublicKeyToken = 045746ba8544160c'またはその依存関係の1つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません

問題は、バージョン番号1.4.1のCompanyClasses.dllファイルがシステムにないことでした。GACにはありません。アプリフォルダーにもありません...どこにもありません。ハードドライブ全体を検索しました。私が持っていたすべてのCompanyClasses.dllファイルは1.4.2でした。

私が見つけた実際の問題は、CompanyControls.dllがCompanyClasses.dllのバージョン1.4.1を参照することでした。CompanyControls.dllを再コンパイルしました(CompanyClasses.dll 1.4.2を参照した後)。このエラーは解消されました。


2
+1 DLLの1つに古いバージョンのCaliburnマイクロを参照させると、同様のことが起こりました。
Jason Massey 2013

私も、あなたの経験が、私が見なければならない場所に火をつけました。
Esen

別のオプションは、CompanyControlsプロジェクトを開くことです。CompanyClasses.dll参照を右クリックします->プロパティ->SpecificVersion = false
BlueRaja-Danny Pflughoeft

これは、xamarinアプリケーションでよく発生します。私はxamarin.droidプロジェクトとは異なるxamarin.formsプロジェクトを持っていました。私はあなたの投稿を見ただけで、それを認識しました。
batmaci 2016年

CompanyClasses.dllが署名されている場合、SpecificVersion = false単独ではそれはカットされません。あなたが必要になりbindingredirectます。
Denise Skidmore、2018年

53

以下は、アセンブリバージョンをバージョン3.1.0.0にリダイレクトします。App.configのこの参照を常に更新するスクリプトがあるため、この問題に再度対処する必要はありません。

リフレクションを通じて、アセンブリpublicKeyTokenを取得し、.dllファイル自体からこのブロックを生成できます。

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
 <dependentAssembly>
    <assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="3.1.0.0" />
  </dependentAssembly>
</assemblyBinding>

XML名前空間属性(xmlns)がないと、これは機能しません。


1
これでうまくいきました。「newVersion = 3.3.3」を「newVersion = 3.1.0」に変更しました
jward01

ただし、回避できる場合は、再バインドルートを使用しないことをお勧めします。そのバグがあなたを噛むようになると、それは一生懸命噛みます。
BanksySan

1
私の問題は、リダイレクトが存在しないアセンブリを指しているという事実でした。App.Configは、インストールした最新のNuGetパッケージからのアセンブリ情報を保持していました。後でこれらのパッケージをダウングレードしたとき、これはクリーンアップされませんでした。これは、4.7.2フレームワークの単体テストプロジェクトに見舞われた.NET標準クラスライブラリでした。実行時に提示ユニットテストプロジェクトの問題...
D-派

@ D-Sectは正しいです。ソースコントロールがweb.configに変更があることを示している場合(NuGetで遊んでいるため)、それらのbindingRedirectsをそこから戻すのが賢明な場合があります。NuGetをダウングレードしてもバインディングリダイレクトはクリーンアップされません
bkwdesign

45

Visual Studioを使用している場合は、「クリーンソリューション」を試してから、プロジェクトを再ビルドしてください。


14
これが通常の解決策です。多くの場合、それを削除binしてobj実行します。基本的に、私が参照していたものはまだ同じ要件を満たそうとしてそこに座っています。たとえば、古いバージョンは直接参照したもので、新しいバージョンはNuGetにあります。
David Betz 2016年

TFSからプルした後、いくつかのDLLでこの問題が発生しました。このソリューションで解決しました。
ミロ

3
私のために働いた。bin amd objフォルダを削除し、問題を解決しました。
user1619480

ありがとう、binフォルダーを削除するだけです。
Cookies Dog、

私にとっては、binフォルダを削除するだけで十分でした。驚いたことに、私は成功する前にクリーンソリューションリビルドソリューションを試しました。時々少し奇妙です。
ライオン

36

他の答えは私にはうまくいきません。バージョンを気にせず、アプリを実行するだけの場合は、参照を右クリックして、「特定のバージョン」をfalseに設定します...これは私にとってはうまくいきました。 ここに画像の説明を入力してください


8
この設定はコンパイル時にのみ影響します。コンパイル後は、コンパイルしたときとまったく同じアセンブリバージョンが必要になります。stackoverflow.com/questions/24022134/…を
Lars Truijens

22

私はこの問題に遭遇しました。問題は、アプリケーションのデバッグディレクトリに.dllの古いコピーがあったことです。(GACの代わりに)ここもチェックして、表示されているかどうかを確認することもできます。


別のサーバーに移行するだけでこの問題が発生し、バックアップが保持されます。バックアップコピーを削除した後に働いた。おかげで:)
Jtuck

22

今からみんなの心を吹き飛ばそうと思います。。。

<assemblyBinding>.configファイルからすべての参照を削除し、NuGet Package Managerコンソールから次のコマンドを実行します。

Get-Project -All | Add-BindingRedirect

私のためにも働いた。ありがとう
Oleh Udovytskyi

あなたは私の時間👌👌保存
Abduイマーム

4
これは、パッケージ管理形式がpackages.configの場合にのみ機能します。packages.configなしで2017 csprojを使用している場合、機能しません:(
ManiVI

1
公式に吹き飛ばされた心
BGilman

それはいい小さなトリックです
hexagod '11 / 12/19

21

NuGetパッケージを追加しました。これは、アプリケーションのブラックボックス部分が古いバージョンのライブラリを参照していることを理解するためだけです。

パッケージを削除し、古いバージョンの静的DLLファイルを参照しましたが、web.configファイルは次の場所から更新されていません。

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
    <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="6.0.0.0" />
</dependentAssembly>

パッケージをアンインストールしたときの状態に戻します。

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.5.0.0" />
</dependentAssembly>

これは、少なくともNuGetを使用するときのEntity Frameworkモジュールでは、ソリューションを右クリックして、[ソリューションのNuGetパッケージの管理]に移動し、次に[インストールされたパッケージ]> [すべて]、そのモジュールを選択、[管理]を選択して確認できます。通常はプロジェクトから選択を解除します。これは、手動で行う必要なく、このようなことを一掃するはずです-ベンダーが彼らのデューデリジェンスをしたと仮定します。しかし、それがあなたがそれを削除した方法である場合、明らかに時々彼らがそうしないように良いキャッチ。
vapcguy 2014

20

私の場合、このエラーはASP.NETアプリケーションの実行中に発生しました。解決策は:

  1. プロジェクトフォルダ内のobjおよびbinフォルダを削除します

クリーンは機能せず、再構築も機能せず、すべての参照は問題ありませんでしたが、ライブラリの1つを作成していませんでした。それらのディレクトリを削除した後、すべてが完全に機能しました。


3
ありがとう、Levi Fuller。この答えはもっと高くなるはずです。私の状況ではそれはその場でした!私にとってこのエラーは、web.configのバックアップコピーを作成したときに始まり、重複したコピーを削除した後でも、Visual Studioは実際の構成ではなくこの構成ファイルをロードし続けました。これで解決しました。ありがとう。
BruceHill 2017

私もうまくいきます。なぜこれがうまくいくのかまだわかりません:(
KangarooWest

14

私の場合は、C:\ WINDOWS \ Microsoft.NET \ Framework \〜\ Temporary ASP.NET Files \ディレクトリにあるDLLの古いバージョンでした。古いバージョンを削除または置き換えるか、プロジェクトのDLLへの参照を削除して追加し直すことができます。基本的に、どちらの方法でも一時ASP.NETファイルへの新しいポインターが作成されます。


2
これは、Visual Studioを閉じ、IISを停止し、すべての一時ASP.NETファイルを削除したときに機能しました。64ビットマシンの場合、FrameworkおよびFramework64フォルダー、および.NET 2.0および4.0フォルダーにファイルがあることに注意してください。
ブライアンB

私はWindowsのスタートメニューの検索機能を使用して、自分のソリューションで作成されたすべてのDLLを検索し、見つかった場所からすべてを削除しました。Visual Studioのデバッグ中にのみ作成する必要があるため、恐れることなくこれを行うことができました。VSはこのような不足しているDLLを再構築し、私のソリューション以外ではそれらを参照する必要がないため、これは「安全な」操作でした。
ザレフェス2014年

8

私たちにとって、問題は他の何かによって引き起こされました。DevExpressコンポーネントのライセンスファイルには2行が含まれており、1つはこの特定のコンピューターにインストールされていない古いバージョンのコンポーネント用です。ライセンスファイルから古いバージョンを削除すると、問題が解決しました。

厄介なのは、エラーメッセージが、どの参照が問題の原因であるかを示していないことです。


2
私の場合、新しいDevExpressバージョンにアップグレードした後、フォームの.resxファイルに、アンインストールされた古いライブラリバージョンへの参照が含まれていました。コードビューで.resxを開き、バージョンを新しいバージョンに修正するか、無効なエントリを削除する必要がありました。
Artemix 2010年

5

このまったく同じエラーは、リフレクションを使用してレイトバインドを試みた場合、バインドしているアセンブリに厳密な名前が付けられた場合、または公開キートークンが変更された場合にスローされます。指定された公開キートークンで実際にアセンブリが見つからなくても、エラーは同じです。

エラーを解決するには、正しい公開鍵トークンを追加する必要があります(dllでsn -Tを使用して取得できます)。お役に立てれば。


1
詳しく説明してください-「sn -T」とは何ですか?そして、どこに公開鍵トークンを追加しますか?
Moritzの両方

3
「sn.exe」はVisual Studioに付属するツールで、Visual Studioコマンドプロンプトから実行できるコマンドラインツールです。(スタートメニューから)Visual Studioコマンドプロンプトを実行し、アセンブリを含むフォルダーに移動して、「sn -T <アセンブリ>」と入力します。<アセンブリ>は、dllの完全な名前です。アセンブリの「トークン」情報を取得します。これが完了したら、リフレクションを使用してレイトバインディングを実行するときに、トークンIDをアセンブリID文字列に入力します(つまり、「Assembly = MyAssembly.dll、Public Key Token = <token guid>)
Guy Starbuck

2
この回答をありがとう。App.iniの構成セクションを参照すると、このエラーが発生しました。最近アセンブリに署名したので、PublicKeyToken = nullを新しい(正しい)トークンで更新する必要がありました。
リアム

5

鉱山はネイサンベッドフォードのポストと非常に似た状況でしたが、少しひねりを加えました。私のプロジェクトも、変更されたDLLを2つの方法で参照しました。1)直接および2)変更されたdllへの参照をそれ自体が持っているコンポーネント(クラスライブラリ)を参照することによって間接的に。今、component(2)のVisual Studioプロジェクトは、変更されたdllの正しいバージョンを参照しています。ただし、コンポーネント自体のバージョン番号は変更されていません。その結果、プロジェクトの新しいバージョンをインストールしても、クライアントマシン上のそのコンポーネントを置き換えることができませんでした。

最終結果:直接参照(1)と間接参照(2)は、クライアントマシンで変更されたdllの異なるバージョンを指していました。私の開発マシンでは問題なく動作しました。

解決策:アプリケーションを削除します。アプリケーションフォルダからすべてのDLLを削除します。私の場合と同じように再インストールしてください。


4

私は誰かに私の愚かな愚かさの恩恵を与えます。完全に別のアプリケーションへの依存関係があります(これをApp1と呼びましょう)。そのApp1のdllが新しいアプリケーション(App2)に取り込まれます。APP1で更新を行うたびに、新しいDLLを作成してApp2にコピーする必要があります。上手。。2つの異なるApp1バージョン間でのコピーと貼り付けにうんざりしているので、DLLにプレフィックス「NEW_」を追加しました。

上手。。。ビルドプロセスは/ binフォルダーをスキャンし、何かが正しく一致しない場合は、上記と同じエラーメッセージが表示されると思います。「new_」バージョンを削除したところ、ダンディなビルドになりました。


4

私の問題は、参照されているアセンブリをプルしないで、ソースコードを新しいマシンにコピーすることでした。

私がエラーを修正したことは何もないので、急いで、BINディレクトリを完全に削除しました。私のソースコードを再構築し、それからそれはうまくいきました。


4

基本的なASP.NET MVC 4プロジェクトを作成し、NuGetを介してDotNetOpenAuth.AspNetを追加したことを追加します。これにより、Microsoft.Web.WebPages.OAuthの不一致DLLファイルを参照した後も同じエラーが発生しました。

それを修正するために私はやった Update-Package完全な再構築のためにソリューションをクリーンアップしました。

それは私にとってうまくいき、一種の怠惰な方法ですが、時間はお金です:-P


1
私にとっても同様の答え。 Update-Package -reinstallすべてのNuGetパッケージを同じバージョンで再インストールします。
ジェス

1
これは素晴らしい; 投稿してくれてありがとう。私はこれらすべての他の素晴らしい提案を試みましたが、これはトリックをした解決策でした。80人が利用可能な場合でも、代替ソリューションを投稿する用意がある人々に感謝します
Hambone

4

Team Foundation Serverのビルドサービスでビルド中にこのエラーが発生しました。NuGetで追加された同じライブラリの異なるバージョンを使用するソリューションに複数のプロジェクトがあることがわかりました。NuGetですべての古いバージョンを削除し、すべての参照として新しいバージョンを追加しました。

Team Foundation ServerはすべてのDLLファイルを1つのディレクトリに配置します。もちろん、特定の名前のDLLファイルは一度に1つしか存在できません。


別の方法は、「ソリューションのNuGetパッケージの管理...」をクリックして、テストプロジェクトとテスト中のプロジェクトの両方を同じ(最新)バージョンに更新することです。
lixonn 2015年

4

私のapp.configには

<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.11.0"/>

npgsqlの場合。どういうわけかユーザーのマシンで、私のapp.exe.configがなくなっていました。馬鹿げたユーザーなのか、インストーラーの不具合なのか、アンチウイルスを改ざんしたのかはまだわかりません。ファイルを置き換えることで問題は解決しました。


3

このエラーが発生する別の理由を見つけました。特定のライブラリのすべてのバージョンからGACを削除し、実行可能ファイルと一緒に展開された特定のバージョンを参照してプロジェクトをビルドしました。プロジェクトを実行すると、ライブラリの新しいバージョンを検索するときにこの例外が発生しました。

その理由は出版社の方針でした。ライブラリのバージョンをGACからアンインストールすると、パブリッシャーポリシーアセンブリもアンインストールするのを忘れたため、ローカルにデプロイされたアセンブリを使用する代わりに、アセンブリローダーがGACでパブリッシャーポリシーを見つけ、新しいバージョンを検索するように指示しました。


3

私にとっては、「Local.testtesttings」ファイルのコードカバレッジ構成が問題を「引き起こした」。そこで参照されたファイルを更新するのを忘れました。


3

プロジェクトのbinフォルダーの内容を削除してソリューションを再構築するだけで問題は解決しました。


1
さて、あなたは何を知っていますか、あなたは私の悲惨さを助けてくれました。本当にありがとう
ロニー・マラング

2

ソリューションをクリーンして再構築しても、出力ディレクトリのすべてのDLLが置き換えられない場合があります。

私が提案するのは、フォルダの名前を「bin」から「oldbin」または「obj」から「oldobj」に変更することです

そして、もう一度ソリューションを構築してみてください。

サードパーティのDLLを使用している場合は、ビルドが成功した後に、新しく作成された「bin」または「obj」フォルダにコピーする必要があります。

これがうまくいくことを願っています。


1

フォルダの場所から古いアセンブリを手動で削除してから、新しいアセンブリへの参照を追加すると役立つ場合があります。


1

同じエラーが発生しました...私の場合、次のように解決されました:

  • 最初にアプリケーションがインストールされたとき、ここの人々はアプリケーションでMicrosoft Enterprise Library 4.1を使用していました。
  • 前の週に私のマシンはフォーマットされましたが、その後今日そのアプリケーションをビルドしたときに、エンタープライズライブラリアセンブリが見つからないというエラーが発生しました。
  • 次に、最初の検索エントリとしてGoogleで入手したMicrosoft Enterprise Library 5.0をインストールしました。
  • 次に、アプリケーションをビルドすると、上記のエラーが発生しました。つまり、見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。
  • 多くの検索作業と分析の結果、アプリケーションが4.1.0.0を参照しており、binフォルダー内のDLLがバージョン5.0.0.0であることがわかりました
  • 次に、Microsoft Enterprise Library 4.1をインストールしました。
  • 以前の参照(5.0)を削除し、4.0参照を追加しました。
  • アプリケーションと出来上がりを構築しました...それはうまくいきました。

1

これがこの問題を修正する私の方法です。

  1. 例外メッセージから、「問題」ライブラリの名前と「予想される」バージョン番号を取得します。

ここに画像の説明を入力してください

  1. ソリューションでその.dllのすべてのコピーを見つけ、それらを右クリックして、それが.dllのバージョンを確認します。

ここに画像の説明を入力してください

さて、この例では、私の.dllは間違いなく2.0.5022.0です(そのため、例外のバージョン番号は間違っています)。

  1. ソリューションのすべての.csprojファイルで、例外メッセージに表示されたバージョン番号を検索します。このバージョン番号をdllの実際の番号に置き換えます。

したがって、この例では、これを置き換えます...

<Reference Include="DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />

... これとともに...

<Reference Include="DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />

仕事完了!


csprojファイルに参照されているバージョンがない場合はどうなりますか?
John Demetriou 2017

1

私の場合、問題は椅子とキーボードの間でした:-)

Could not load file or assembly 'DotNetOpenAuth.Core, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=2780ccd10d57b246' or one of its dependencies.
The located assembly's manifest definition does not match the assembly reference.
(Exception from HRESULT: 0x80131040)

2つ以上の異なるアセンブリが異なるバージョンのDotNetOpenAuthライブラリを使用することを望んでおり、それは問題にはなりません。さらに、私のローカルコンピューターでは、web.configがNuGetによって自動的に更新されました。

<dependentAssembly>
    <assemblyIdentity name="DotNetOpenAuth.AspNet" publicKeyToken="2780ccd10d57b246" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
    </dependentAssembly>
    <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
</dependentAssembly>

その後、新しいweb.configを運用サーバーにコピー/展開するのを忘れていることに気付きました。したがって、web.configを手動で展開する方法がある場合は、更新されていることを確認してください。運用サーバー用に完全に異なるweb.configがある場合、NuGetを使用した後、これらのdependentAssemblyセクションを同期してマージする必要があります。


1

見つかったアセンブリのマニフェスト定義がアセンブリ参照一致しませんようなエラーが発生し、VSの[プロジェクト]> [NuGetパッケージの管理]および[更新]タブで更新した場合、最初にできることは、別のバージョンのNuGetギャラリーページからバージョンを確認し、パッケージマネージャーコンソールから以下のコマンドを実行した後のパッケージ:

PM> Install-Package YourPackageName -Version YourVersionNumber 
//Example
PM> Install-Package Microsoft.Extensions.FileProviders.Physical -Version 2.1.0

回答は問題のパッケージに直接関連しておらず、ずっと前に尋ねられましたが、それは一種の一般的であり、依然として関連性があり、誰かを助けることを願っています。


1

解決策はありませんでした。プロジェクトソリューションのクリーンアップ、ビンの削除、パッケージの更新、パッケージのダウングレードなどを試みました... 2時間後、アセンブリを含むプロジェクトからデフォルトのApp.configをロードし、そこから間違った参照バージョンを変更しました:

<dependentAssembly>
    <assemblyIdentity name="Microsoft.IdentityModel.Logging" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.5.0.0" newVersion="5.5.0.0" />
</dependentAssembly>

に:

<dependentAssembly>
    <assemblyIdentity name="Microsoft.IdentityModel.Logging" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.14.0.0" newVersion="5.5.0.0" />
</dependentAssembly>

この後、プロジェクトをクリーンアップし、再度ビルドして、うまくいきました。警告は問題ありません。


0

作成していたアセンブリと同じ名前のアセンブリを参照したため、このエラーメッセージが表示されました。

これはコンパイルされましたが、参照されたアセンブリを現在のプロジェクトアセンブリで上書きしたため、エラーが発生しました。

それを修正するために、プロジェクトの名前を変更し、プロジェクトを右クリックして「プロパティ」を選択することで使用可能なアセンブリプロパティを変更しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.