TFS2010 (RC) Microsoft.TeamFoundation.Build ターゲットの CoreCompile タスクが csc.exe に渡されるアセンブリ参照をどのように生成するかについて、誰でも光を当てることができますか?
System.Xml.dll のバージョン 2.0 と 4.0 の両方への参照が見られますが (以下の太字で表示)、プロジェクト アセンブリ参照で「特定のバージョン: true」フラグを使用しており、 4.0 アセンブリへの参照はありません。 btproj ファイル:
C:\Windows\Microsoft.NET\Framework\v3.5\Csc.exe /noconfig /nowarn:1701,1702 /platform:x86 /errorreport:prompt /warn:4 /define:TRACE
/reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Configuration.dll
/reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll
**/reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll**
/reference:C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.dll
**/reference:C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Xml.dll**
/reference:C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Data.dll
/reference:C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Web.Services.dll
更新: ResolveAssemblyReferencesターゲット ( Microsoft.Common.targetsから) の出力を確認したところ、プロジェクトで参照されているアセンブリ (つまり、2.0 フレームワーク アセンブリ) のみがアイテム リスト'_ResolveAssemblyReferenceResolvedFiles'に含まれていることがわかります。
ResolveAssemblyReferenceResolvedFiles:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Configuration.dll;
C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll;
C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll
ただし、CoreCompile ターゲットには、上記で説明した 4.0 アセンブリがまだ含まれています。
更新 2 : わかりました。BizTalkビルド スクリプトのAddBizTalkHiddenReferencesターゲットのあいまいなバグまで追跡しました。この特定のターゲットは、上記で複製されたものを含め、追加のアセンブリを追加しようとします。
ただし、「mscoree.dll」の GetCORSystemDirectory を使用します。これは、プロセスに読み込まれる共通言語ランタイム (CLR) のインストール ディレクトリを返します。この場合は、MSBuild に読み込まれる 4.0 フレームワークです。その結果、ヘルパーは参照されている System.Xml アセンブリを持っているとは見なさず、それを追加するため、重複します。