先週のセキュリティアップデート以降、コンパイルに失敗したVS2010で構築された古いASP.NET MVC 3 Webアプリケーションがあります。
問題は、System.Web.Mvc.dllへの参照が壊れていることです。
セキュリティ更新プログラムが実行されていないビルドマシンでソリューションファイルを開き、References-> System.Web.MVCのプロパティダイアログを開くと、問題はありません。
パスはC:\ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dllバージョンは3.0.0.0です
しかし、セキュリティ更新プログラムが実行されている開発マシンでソリューションファイルを開くと、References-> System.Web.MVCが見つからないというフラグが立てられます。それを削除し、VS2010の[参照の追加]ダイアログを使用して再度追加しようとしても、表示されません。
Webをさまよい歩き、NuGetを使用してMVCを更新することを提案しました。VS2010プロジェクトでは、NuGetを使用しなかったため、この状況では正しくないようです。とにかくそれを試してみたところ、6ダースの参照が不足していました。
Windowsエクスプローラーで「C:\ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll」のプロパティを見ると、ビルドマシンにバージョン3.0.0.0が表示されています。
開発マシンのプロパティを見ると、バージョン3.0.50813.1が表示されています。
必要なのは、.NET 3.0フレームワークにインストールされているこれらの2つのDLLに関係なくビルドおよび実行できるように、ビルドおよび実行の方法を変更する方法です。
アイデア?
私が試したことはうまくいきませんでした
最初の試み-アセンブリがない場合は追加します。古い欠落している参照を削除しました。次に、「ASP.NET MVC3 \ Assemblies」フォルダーから自分のプロジェクトのフォルダーにDLLをコピーしました。「常にコピー」に設定し、参照として追加しました。
これで、プロジェクトはVS2010でコンパイルされますが、aspnet_compilerを使用してページをプリコンパイルしようとすると、警告が表示されました。
(0): warning CS1702: Assuming assembly reference 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' matches 'System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35', you may need to supply runtime policy
これまでのところ、ランタイムポリシーの理解を回避することができましたが、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-3.0.0.0" newVersion="3.0.0.1" />
</dependentAssembly>
</assemblyBinding>
</runtime>
もう一度試して、同じ警告を受けました。
私の質問は-まだ問題がありますか?または警告にもかかわらず、私はそれを解決しますか?