2012-05-01 17 views
34

私はVS2010でコンパイルされたASP.NET MVC4プロジェクトを持っています。展開のために、私はaspnet_compiler.exeを使用してWebサイトをプリコンパイルしようとナントスクリプトを実行しますが、私はSystem.Web.WebPageaspnet_compiler 2.0.0.0ではなくSystem.Web.WebPages 1.0.0.0の間違ったバージョンを見つける

エラーCS1705とアセンブリ参照の問題に実行し続ける:アセンブリ「System.Web.Mvc、 Version = 4.0.0.0、Culture =ニュートラル、PublicKeyToken = 31bf3856ad364e35 'は' System.Web.WebPages、Version = 2.0.0.0、Culture =ニュートラル、PublicKeyToken = 31bf3856ad364e35 'を使用します。 、バージョン= 1.0.0.0、文化=中立、なPublicKeyToken = 31bf3856ad364e35'

私も私のweb.configファイルで次のアセンブリバインディングを持っている:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> 
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
      <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
      <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
      <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> 
      <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
      <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" /> 
      <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

、私csprojには、次の参照があります。

<Reference Include="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> 
    <Private>True</Private> 
<HintPath>..\packages\AspNetWebPages.Core.2.0.20126.16343\lib\net40\System.Web.WebPages.dll</HintPath> 
</Reference> 

答えて

35

を私は明示的にWeb.configファイルに2.0のアセンブリを参照することで、この問題を解決しました。何らかの理由でASP.NETコンパイラ(私の場合、MvcBuildViewsを実行している)が見つかった場合は、最初に古い1.0アセンブリを使用していると思います。

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <!-- … --> 
    <system.web> 
    <!-- … --> 
    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" /> 
     <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" /> 
     </assemblies> 
    </compilation> 
    <!-- … --> 
    </system.web> 
    <!-- … --> 
</configuration> 

ところで、サードパーティのASP.NET MVC 3.0コンポーネントを追加した後、初めてこの問題が発生したようです。そのコンポーネントはアセンブリバインディングで正常に動作しますが、ASP.NETコンパイラが最初に1.0 Webページをロードしようとする理由が考えられます。

+0

私はこの作業を開始し、MVCがすべてバージョン3であることに気づきました。ウェブ設定を変更する代わりに、参照されたdllを正しいバージョンに置き換えました。 –

2

このエラーは、MvcBuildViewsがtrueに設定されている場合にも発生します。

「ビルドソリューション」を使用してソリューション全体を構築するときにこのエラーが発生することに気付きました。その時点で、すぐにMVCプロジェクトをビルドすると(プロジェクトを右クリックしてビルドして)、MVCプロジェクトが正常に構築されます。

MVCプロジェクトを単独でビルドすることは、依存プロジェクトのビルドをトリガしない限り成功しているようです(つまり、それらは最新です)。しかし、 'Build Solution'を使用したビルドはこのエラーで失敗します。

8

同様の問題がありました。

Visual Studio 2012を使用して開発中です.2012に2010プロジェクトを変換して展開しようとすると、ASP.NETは1.0.0.0ではなく2.0.0.0を必要としていました。

調査の結果、このプロジェクトではSystem.Web.WebPagesの特定のバージョンが参照されていないことがわかりました。そのため、VS 2012にアップグレードした後、2.0.0.0バージョンが見つかりました。

プロジェクトから参照を削除し、特定のバージョンをGACから再度追加すると、正常に動作します。

+0

GACからの参照を削除して追加するのとまったく同じです。 – marapet

3

問題は、_bin_deployableAssembliesフォルダ内の関連するDLLの古いコピーでした。これを削除すると、2.0バージョンで正しく設定されました。

+0

ありがとう、これは私が2日間対処していた問題を解決しただけで、私はそのディレクトリを持っていたことに気付かなかった。 – Solmead

+0

喜んで、失われた時間について聞いて申し訳ありません:) –

0

このような場合、解決策のルートフォルダにあるすべてのファイルにわたって「ファイルで検索」を実行する価値があります。古いバージョンへのすべての参照を取り除くことができます。このようにSystem.Web.WebPages, Version=1.0.0.0

:上記の例

は、私が探してきたと思います。

1

私はそれを持っていたときに私の頭をしばらく傷つけました。最終的に私はweb.configの "ランタイム"セクションに次のセクションがあることに気付きました。

<runtime> 
. . . 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
     </dependentAssembly> 
. . . 
</runtime> 

あなたが見ることができるように、これはあなたにもweb.configファイルののsystem.web /コンパイル/アセンブリセクションに持って、次のコードと一致していないアセンブリのバージョン2を指します。

<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 

プロジェクトの参照で参照実際のアセンブリは確かv1.0.0.0であるので、私はすぐに問題を修正し、次に上記のコードの最初のチャンクを変え。私は最初に間違いがどのようにそこにあったのか分かりません。私にとって

<runtime> 
. . . 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0" /> 
     </dependentAssembly> 
. . . 
</runtime> 
1

それが犯人だったSystem.Web.WebPages.Administration v1.0.0.0を参照しました。一旦削除されると、Web.configの調整がなくてもすべて動作しました。

0

この問題は、Webプラットフォームインストーラを使用して最新バージョンの.NETにアップデートする可能性が高いと思われますが、最新バージョンのASP.NET MVCがインストールされていませんでした。これをWeb Platformインストーラ経由でアップデートすることで、この問題が修正されました。

0

System.Web.Mvcバージョン4.0以上を参照して追加して追加してください。私はSystem.web.mvc 4.0.0.1のリファレンスを追加するだけで動作します。

古いMvcのバージョンを削除することを忘れないでください。

0

の削除と再追加リファレンスSystem.Web.Mvcは私のために

2

を仕事をしてくれた5.2.3.0にMVC 3からサイトをアップグレードするとき、私は、この問題を経験しました。

私の問題は、パッケージと関連するDLLをNugetインストールから追加していないことでした。

ソリューションのパッケージフォルダに次のフォルダを手動で追加しました。

Microsoft.AspNet.Razor.3.2.3

Microsoft.Web.Infrastructure.1.0.0.0

一度ビルドサーバーは、もはや持っていたcomittedなかっ Microsoft.AspNet.WebPages.3.2.3問題。

関連する問題