2

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 アセンブリを持っているとは見なさず、それを追加するため、重複します。

4

1 に答える 1

4

参照アセンブリは、プロジェクト ファイルで定義された項目に基づいてResolveAssemblyReferences、ファイル内のターゲットによって解決されます。Windows\Microsoft.NET\Framework\$(Version)\Microsoft.Common.targetsReference

于 2010-05-11T13:05:46.863 に答える