任何人都可以了解TFS2010(RC)Microsoft.TeamFoundation.Build目标中的CoreCompile任务如何生成传递给csc.exe的程序集引用?
我们看到对System.Xml.dll的版本2.0和4.0的引用(下面以粗体显示),但我们在项目程序集引用和 btproj文件中没有对4.0程序集的引用:
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)的安装目录,在这种情况下加载到4.0框架MSBuild的;因此,帮助程序认为它没有引用System.Xml程序集并添加它,因此重复。
答案 0 :(得分:3)
参考程序集由文件ResolveAssemblyReferences
中的Windows\Microsoft.NET\Framework\$(Version)\Microsoft.Common.targets
目标根据项目文件中定义的Reference
项解析。