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オブジェクトとしてコンパイルしている理由を知っている人はいますか?
ありがとうございます。
クリス
我々はプロジェクトをアップグレード
HKLM\Software\Microsoft\MsBuild\ToolsVersions\SDK35ToolsPath
キーレジストリを追加する必要があると思う、我々は3.5としてターゲットフレームワークのバージョンを保ちました。ビルドサーバには7.0A SDKがインストールされていません(7.1 SDKがあります)。 [7.0AはVisual Studioにインストールされており、ビルドサーバーには7.0Aがインストールされていません。 –昨夜、疲れました。どの "ToolsVersion"をcsprojで使用しますか? –
そのリンクは非常に興味深いように見えます - 私はbuildserverをチェックしました。私はあなたが問題を特定したことを99%確信しています(私はそれを答えとしてマークします)。私たちが直面していたすべての問題の結果、私たちのソリューションを.Net 4.0にアップグレードします。 –