4

Visual Studio 2010 Web 配置プロジェクトを使用して、ビルド中に Web アプリケーション Web サイトをコンパイルしています。Visual Studio 2010 はビルド エージェントにインストールされていません。自動生成された Foo.XmlSerializers.dll が、現在読み込まれているランタイムよりも新しいランタイムでビルドされ、aspnet_compiler.exe で読み込むことができないことに関連して、ビルド中にエラー (以下を参照) が発生します。

プロジェクト ファイルで .NET Framework v3.5 をターゲットにしています。

エラーは次のとおりです(長い行用に再フォーマットされています):

"C:\BuildAgent\work\3836706d661b8a05\project\src\Foo.FrontEnd.WdpSite\
Foo.FrontEnd.WdpSite.wdproj" (Build target) (1) ->
  (AspNetCompiler target) ->
    ASPNETCOMPILER : error ASPCONFIG: Could not load file or assembly 
    'Foo.FrontEnd.Site.XmlSerializers' or one of its dependencies. 
    This assembly is built by a runtime newer than the currently loaded 
    runtime and cannot be loaded.   
[C:\BuildAgent\work\3836706d661b8a05\project\src\Foo.FrontEnd.WdpSite\
Foo.FrontEnd.WdpSite.wdproj]
4

1 に答える 1

1

私は同じエラーメッセージで同様の問題を抱えていました、そして多くの欲求不満の後に解決策を見つけました(それはうまくいけばこれのためのいくつかのアイデアを与えるでしょう)。

ここに、.NET3.5をターゲットとするVS2010プロジェクトをビルドするWindowsSDK 7.1(およびVs 2008を使用する場合は6.1)を使用するビルドサーバーがあります。次に、Webプロジェクトはaspnet_compilerでプリコンパイルされます(http://msdn.microsoft.com/en-us/library/ms229863.aspx#findingthecorrectversionに従ってv2から))。事前コンパイル中に、WebサービスへのWeb参照を含むプロジェクト(Webではなく、通常のライブラリ)に対して自分と同じエラーメッセージを受け取りました。Windows SDK 7.1は、.NET 3.5ツールを使用するためのレジストリパスを正しく設定していないようです(Visual Studioは設定しています)。これにより、Web参照が.NET 4のターゲットランタイム(リフレクターを使用して検証)でコンパイルされたため、aspnet_compilerv2が適合しました。ビルドサーバーのレジストリ設定と、SDK7.1の.NET3.5構成が適切でないことを示したローカルのVisualStudioインストールを比較したので、ビルドサーバーを以下で修正しました。私の推測では、(非Webプロジェクトの)Web参照xmlは、正しい.NET 3.5 sgenを使用しないためのフォールバックとして、.NET4用のsgenでプリコンパイルされていました。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDK-NetFx35Tools-x86]
"ComponentName"="Windows SDK .NET Framework 3.5 Multi-targeting Utilities"
"InstallationFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\bin\\"
"ProductVersion"="7.1.7600.0.30514"

補足として、WindowsSdkVerを使用して7.1をデフォルトのSDKとして設定しました。

于 2011-08-01T10:38:45.303 に答える