2011-09-23 5 views
3

私の開発マシンにWebMatrix 2 Betaをインストールした後、そのマシンでコンパイルされ、運用サーバーにデプロイされたMVCプロジェクトはSystem.Web.WebPagesを探してFileNotFoundExceptionを投げ始めます。WebMatrix 2 Betaをインストールした後、MVCプロジェクトがプロダクションサーバーで例外をスローするのはなぜですか?

"...System.IO.FileNotFoundException: Could not load file or assembly 'System.Web.WebPages, 
Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. 
The system cannot find the file specified. File name: 'System.Web.WebPages, Version=2.0.0.0, 
Culture=neutral, PublicKeyToken=31bf3856ad364e35'..." 

私はこれを支援するため、Googleで何かを見つけることができませんでしたので、私はこのような状況に遭遇し、誰のためにここに尋ねると、これを答えるいます。この問題につながるのは、かなり不明瞭な状況です。

さまざまなリリースでアップグレードしていたかなり古いMVCプロジェクトがある場合は、バージョン管理されていないプロジェクトの参照がSystem.Web.WebPagesになっている可能性があります。

<Reference Include="System.Web.WebPages" /> 

これは、プロジェクトがコンパイルされたバージョンが見つかったバージョンが、使用可能なバージョンと一致する場合は問題ありません。

WebMatrix 2 Betaをインストールすると、このDLLの新しいバージョンが追加されます。あなたのMVCプロジェクトはコンパイルのためにv2.0.0.0を引き出し始めます。 WebMatrix 2 Betaをインストールしていないシステムに移動すると、v2が検出されず、上記の例外がスローされます。

答えて

4

私は新しいMVC 3プロジェクトをスピンアップし、新しいプロジェクトで完全修飾され、問題プロジェクトでより一般的な参照がいくつかあることに気付きました。

<Reference Include="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" /> 
<Reference Include="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" /> 

あなたの代わりに、一般的なもの(<Reference Include="..." />)のこれらのプロジェクトの参照に切り替えた場合、あなたはプロジェクトが、むしろシステム上で使用可能な最新のものを拾うよりも、DLLの予想バージョンでコンパイルされていることを確認します。

関連する問題