Microsoft ASP.NET Web API ODataパッケージ5.0.0-rc1プレリリースをインストールした後、次の例外が発生します。
ファイルまたはアセンブリ「System.Web.Http、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35」またはその依存関係の1つをロードできませんでした。検出されたアセンブリのマニフェスト定義は、アセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)
私のMVC 4プロジェクトはまったく新しいもので、本当に小さく、空想的なものは何もありません。 .NET framework 4.5をターゲットにしています
これが必要です nuget package to Deltaクラスを使用してPATCHを実装 (パッケージのバージョン4.0.0.0を使用すると、Deltaクラスが機能しません)。
どうすれば修正できますか?
GACにSystem.Webのバージョン5.0.0.0があります.Http
gacutil -l System.Web.Httpグローバルアセンブリキャッシュには、System.Web.Http、Version = 5.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35、processorArchitecture = MSILのアセンブリが含まれています。
Visual Studioでアセンブリを参照すると、System.Web.Httpの特定のバージョンは4.0.0.0(なぜ?)
my projectでは、System.Web.Httpへの参照
Web.configでリダイレクトv 4.0.0.0を5.0.0.0にバインドしようとしました
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="4.0.0.0-4.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
しかし、別の例外があります:
メソッド「System.Web.Http.GlobalConfiguration..cctor()」によるフィールド「System.Web.Http.GlobalConfiguration.CS $ <> 9__CachedAnonymousMethodDelegate2」へのアクセスに失敗しました。
V 4.0.0.0は、コアWeb Apiエンジンで実際に使用する必要があると思います。
コード分析エラーは、MVC4 Web APIのファイルまたはアセンブリ 'System.Net.Http、Version = 2.0.0.0をロードできませんでしたファイルまたはアセンブリ' System.Net.Http、バージョンをロードできませんでした= MVC4 Web APIの2.0.0.
Visual Studio 2013には、これを処理する新しい機能があります。アプリをビルドすると、参照されているアセンブリのさまざまなバージョンに関する警告が表示されます。警告をダブルクリックして、アセンブリバインディングリダイレクトをweb.configに追加します。
http://msdn.Microsoft.com/en-us/library/2fc472t2.aspx を参照してください。
jeff.eynonは、VSにファイルを自動的に編集させるには、web.configをチェックアウトする必要がある(TFSソース管理を使用している場合)ことを以下に示します。ヒントをありがとう!
Nugetを使用してWebApiパッケージをプレリリースバージョンにアップグレードすることで機能させました。
PM> Microsoft.AspNet.WebApi -Pre
WebApiの最新バージョンを使用してプロジェクトを強制するには、ルートWeb.configにいくつかの変更が必要でした。
1)2.0.0.0から3.0.0.0のWebページバージョン
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
</appSettings>
2)System.Web.HttpおよびSystem.Net.Http.Formattingの5.0.0.0へのリダイレクトのバインド
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
それだと思う
PS: WebAPI OData 5.0 Betaから非常にヒントを得たソリューション-GlobalConfigurationにアクセスするとセキュリティエラーがスローされる
プロジェクトテンプレートからホットタオルプロジェクトを更新しようとしたとき、および2013年10月23日の時点でVS 2012で空のプロジェクトを作成し、nuget経由でHotTowelをインストールしたときに、この問題が発生しました。
修正するために、Nugetを介してWeb Api WebホストおよびWeb APIパッケージを5.0に更新しました。これは、現時点(2013年10月23日)のNuGetの現在のバージョンです。
次に、バインディングダイレクトを追加しました。
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
私は同じ問題に出会い、次のライブラリのCopyLocalをtrueに設定することで解決しました。
System.Web.Http.dll
System.Web.Http.WebHost.dll
System.Net.Http.Formatting.dll
MVC4とNET 4を使用することを追加する必要があります
または、NuGet Package Manager Consoleからこれを行うことができます
Install-Package Microsoft.AspNet.WebApi -Version 5.0.0
そして、System.Web.Http.WebHost 5.0への参照を追加できるようになります
参照からSystem.Web.HttpおよびSystem.Net.Http.Formattingを削除し、binフォルダー(nugetによってコピーされた場所)を参照して参照を追加します。ファイルバージョンには5.0.0.0と表示されます。
私は同じエラーに直面しました。 Unity Framework for Dependency Injectionをインストールすると、HttpおよびHttpFormatterの新しい参照が構成に追加されました。だからここに私が従った手順があります。
NuGetパッケージマネージャーコンソールで次のコマンドを実行しました:PM> Install-Package Microsoft.ASPNet.WebAPI -pre
そして、バージョン5.0でdllへの物理参照を追加しました
このエラーは、いくつかの異なるプロジェクトで数回発生しました。
最後にわかったのは、ビルドするときに、binフォルダーにsystem.web.mvcバイナリアセンブリのコピーが既にあるということです。
これを修正するには、参照リストでアセンブリを右クリックし、「プロパティ」を選択します。 「バージョン」プロパティを見て、これが最新バージョンかどうかを確認します。そうである場合、「ローカルコピー」をtrueに切り替えます。
これにより、プロジェクトで参照されているバージョンが、最終的にバイナリフォルダーにあるバージョンになります。
それでもエラーが発生する場合は、nuGetを実行して最新バージョンを取得してから、上記の手順を再度実行してください。
幸運-このエラーは苦痛です!
私は方法で解決します。最初にnugetをインストールします。 2番目に使用します。
図は次のとおりです。
3番目:「Version」プロパティを見て、これが最新バージョンかどうかを確認します。
最後に、プロジェクトが最新バージョンであることを再度確認します。
同じ種類の問題に直面し、以下の手順に従って問題を解決しました
[ツール]-> [ライブラリパッケージマネージャー]-> [パッケージマネージャーコンソール]に移動し、以下のコマンドを実行します
インストールパッケージMicrosoft.ASPNet.WebAPI -pre
Nugetパッケージマネージャーにアクセスして、パッケージを更新しました。今では動作します。私が更新した主なものは、Microsoft.AspNet.WebApi.Coreです。適切な参照を同期するには、両方のプロジェクトでこれを行う必要がある場合があります。
上記のようにWeb.config
ファイルの参照を変更した後、参照を解決しました。
私は同様の問題に直面していました。
プログラムファイルからMicrosoft.Data.Edm.dll
およびOData.dll
およびその他のアセンブリを参照します。
C:\Program Files (x86)\Microsoft WCF Data Services\5.0
\bin\.NETFramework\Microsoft.Data.Edm.dll
そして
C:\Program Files (x86)\Microsoft WCF Data Services\5.0
\bin\.NETFramework\Microsoft.Data.OData.dll
バージョンは5.6.4でした。
両方のアセンブリの参照をC:\....Project\packages\Microsoft.Data.Edm.5.6.0
に変更すると、問題は解決しました
この問題が発生した場合は、以下のセクションでweb.configを確認してください
以下のセクションでは、使用されている特定のdllのバージョンを示します
web.configのこのセクションを確認した後、ソリューションエクスプローラーを開き、図に示すようにプロジェクトツリーから参照を選択します。 ソリューションエクスプローラー->参照
参照を展開した後、エラーの原因となったdllを見つけます。 dll参照を右クリックして、上の画像に示すようなバージョンを確認します。
Config dllバージョンと参照されるdllの両方が異なる場合、この例外が発生します。両方が同じバージョンであることを確認してください。