2010-11-22 11 views
2

Visual Studio 2010を使用するようにコードベースをアップグレードしようとしていますが、ビルドサーバーですべてのソートを行う際に問題があります。ビルドサーバーにVisual Studio 2010をインストールする必要はなく、.Net 4フレームワークとSDK(v7.1)だけをインストールしています。VS2010がインストールされているマシンと7.1 SDKがインストールされているマシンの違い

私たちはまだ.Net 3.5プラットフォームをターゲットにしたいと思っています(将来はいつでも.Net 4にアップグレードされますが、今後はしたくありません)。

私たちはコードをコンパイルすることができましたが、今度は次のようなランタイムエラーが発生しています。

Could not load file or assembly 'System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

問題は、ランタイムが埋め込まれたリソースをデシリアライズしようとしていると私は、リフレクタ内のリソースを見れば、私は彼らがすべての.NET 4.0のオブジェクトであることがわかります。たとえば、WindowsアプリのアイコンのタイプはSystem.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3aです。

MSBuildが(ターゲットと異なるランタイムを使用して)リソースを正しくコンパイルしていないようです。私は私のdevマシン上に構築されたdllとビルドサーバー上に構築されたdllの差分を調べることでこれを確認しました.dllのリソースは2.0.0.0バージョンを使用し、もう一方は(ビルドサーバーから)4.0を使用しています.0.0。どちらの場合も、プロジェクトの参照はv2.0.0.0のdllになります(予想通りです)。

MSBuildがリソースを4.0オブジェクトとしてコンパイルしている理由を知っている人はいますか?

ありがとうございます。

クリス

答えて

3

については、このリンクを参照してくださいに役立ちますかどうかわからないんだけど? csprojファイルをテキストエディタで表示すると、それを探すことができます。 ビルドサーバーに7.0aフレームワークがありますか?

EDIT:

私はしばらく前に同じ問題に遭遇し、それは、レジストリキーが設定されていないとは何かを持っています。ここを見てみましょう: http://connect.microsoft.com/VisualStudio/feedback/details/594338/tfs-2010-build-agent-and-windows-7-1-sdk-targeting-net-3-5-generates-wrong-embedded-resources

を、私はあなたが手動で

+0

我々はプロジェクトをアップグレードHKLM\Software\Microsoft\MsBuild\ToolsVersions\SDK35ToolsPathキーレジストリを追加する必要があると思う、我々は3.5としてターゲットフレームワークのバージョンを保ちました。ビルドサーバには7.0A SDKがインストールされていません(7.1 SDKがあります)。 [7.0AはVisual Studioにインストールされており、ビルドサーバーには7.0Aがインストールされていません。 –

+0

昨夜、疲れました。どの "ToolsVersion"をcsprojで使用しますか? –

+0

そのリンクは非常に興味深いように見えます - 私はbuildserverをチェックしました。私はあなたが問題を特定したことを99%確信しています(私はそれを答えとしてマークします)。私たちが直面していたすべての問題の結果、私たちのソリューションを.Net 4.0にアップグレードします。 –

0

私は、これはしかし、あなたはVS2010にあなたのソリューションをアップグレードするとき、あなたは目標の枠組みを変えなかったRequiresFramework35SP1Assemblyタスク

http://msdn.microsoft.com/en-us/library/ff598689.aspx

関連する問題