MSBuild核心编译目标标识引用程序集

问题描述:

任何人都可以了解TFS2010(RC)Microsoft.TeamFoundation.Build目标中的CoreCompile任务如何生成传递给csc.exe的程序集引用?MSBuild核心编译目标标识引用程序集

我们看到System.Xml.dll的版本2.0和4.0(以粗体显示)的引用,但是我们在项目组件参考上使用'Specific Version:true'标志,

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 

更新:在btproj文件到4.0集的引用我已检查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:好吧,我在AddBizTalkHiddenReferences目标在BizTalk构建脚本跟踪下来到一个不起眼的错误。这个特定的目标尝试添加其他程序集,包括上面重复的程序集。

然而,它使用从“MSCorEE.dll中”,它返回被加载到处理公共语言运行库(CLR)的安装目录,在这种情况下,4.0框架装入的MSBuild的GetCORSystemDirectory;结果,助手不认为它引用了System.Xml程序集并添加它,因此是重复的。

+0

如果您没有将System.Xml.dll的特定版本设置为true,那么行为如何? – 2010-05-11 13:06:28

+0

它*看起来没有任何区别。 – 2010-05-12 08:11:38

+0

我不明白的东西:你是否参考了System.Data.dll v4和System.Web.Services.dll v4? – 2010-05-12 12:37:51

参考组件通过ResolveAssemblyReferences目标在文件Windows\Microsoft.NET\Framework\$(Version)\Microsoft.Common.targets中根据项目文件中定义的Reference项目解析。