web-dev-qa-db-ja.com

ファイルまたはアセンブリ「System.Web.Mvc、Version = 3.0.0.0」またはその依存関係の1つをロードできませんでした

パッケージマネージャーコンソールで次のコマンドを使用して、MVCプロジェクトにNinjectを追加しています。

Install-Package Ninject -version 3.0.1.10
Install-Package Ninject.Web.Common -version 3.0.0.7
Install-Package Ninject.MVC3 -Version 3.0.0.6

アプリケーションを実行すると、次のようなエラーが表示されます。

ファイルまたはアセンブリ「System.Web.Mvc、Version = 3.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35」またはその依存関係の1つをロードできませんでした。検出されたアセンブリのマニフェスト定義は、アセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)

21
Dani Petrick

アプリケーションweb.configファイルを更新する

これらの変更は、Viewsフォルダー内のweb.configファイルではなく、アプリのweb.configファイルで行ってください。

 <runtime>
     <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
         <dependentAssembly>
             <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
             <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
         </dependentAssembly>
      </assemblyBinding>
 </runtime>
16
amighty

Pro ASP.NET MVC 5 を使用している場合は、次の手順に従って問題を解決してください。

  1. VSのプロジェクトツリーで、Referencesを右クリックし、Manage NuGet Packagesに移動します。
  2. Onlinenuget.orgに移動し、ninjectを検索します。
  3. NinjectNinject.Web.Common、およびNinject.MVC5をインストールします(本ではMVC3をインストールするように指示されています)。
  4. (ステップ1からの)Manage NuGet Packagesメニューで、Updatesnuget.orgに移動します。
  5. すべてのモジュール、特にMicrosoft ASP.NET MVCを更新します。
7
mihai

Ninjectを使用するMicrosoft ASP.NET Web API 2.2プロジェクトがあります。

この問題を解決するには、NinjectがMicrosoft ASP.NET MVC 4を必要とするため、プロジェクトにNuGetパッケージSystem.Web.Mvcをインストールする必要があります。これにより、Visual StudioはSystem.Web.Mvcをプロジェクトの参照に追加します。

また、Copy Local参照のプロパティにSystem.Web.Mvc = Trueを設定する必要があります。そのため、DLLはBinフォルダーにコピーされます。 DLLには、標準の.NET Frameworkが付属していません。 ASP.NET MVCパッケージの一部です。

3
Tony

参照を展開し、System.Web.Mvcにカーソルを合わせると、バージョンが4.0.0.1であることがわかりました。そして、そのパスは奇妙なことにC:\ Program Files(x86)\ Microsoft ASP.NET\ASP.NET MVC 4\Assembliesです。 packages.configでは、対応するnugetパッケージがMicrosoft.AspNet.Mvc.5.2.3であることが示されました。参照が間違っているようです。そのため、プロジェクトから参照を削除しました。次に、次のコマンドを使用してnugetパッケージをアンインストールしました。

uninstall-package Microsoft.AspNet.Mvc -force

コマンドのforceに注意してください。

その後、次のコマンドで再インストールしました

install-package Microsoft.AspNet.Mvc -version 5.2.3.0

参照されたdllがnuget oneを正しく指していることを確認しました

D:\ Vivek\Code1\Sept17\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll

今実行したとき、System.Web.Webpages.Razor(Microsoft.AspNet.WebPages nuget)とSystem.Web.Razor(Microsoft.AspNet.Razor nuget)で同様の問題を発見しました。そのため、それらも削除し、対応するnugetパッケージを再インストールしました。

その後、ようやく機能しました。

1
VivekDev

amighty's Answer がうまくいかなかった場合は、これを試してください

<dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>

この解決策は、長時間にわたってこのエラーに苦労してきた

1

私の場合、欠落しているアセンブリはプロジェクトへの参照として既に含まれていました。それを選択し、その「ローカルコピー」プロパティをTrueに設定することで解決しました。 Visual Studioからweb-deployを使用して、プロジェクトをIISに「公開」しました。今回は、アセンブリがWebサイトの\ binフォルダーにコピーされました。

0
Rob Bowman

アプリケーションでこの問題に直面していました。

私のソリューションでは、WebアプリケーションプロジェクトとWeb APIプロジェクトがありました。 Webアプリケーションはweb-apiを消費していました。

私の問題の修正は、WebアプリケーションのMvc dllバージョンがweb-apiプロジェクトのバージョンと異なることでした。そのため、web-apiにアクセスしようとすると、エラーがスローされました。両方のプロジェクトで同じMvc dllバージョンが使用され、問題なく動作することを確認しました。これにはNuGet Package Managerを使用できます。

同様のシナリオに直面しているかもしれない他の人の参照のためにそれを言及するだけです。

0
RKS