任何人都能解释一下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
更新
:我已经检查了
解决assemblyreferences
目标(来自
microsoft.common.targets目标
)并且可以看到只有项目中引用的程序集(即2.0框架程序集)包含在项列表中
''u 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
:好的,我已经追踪到了
添加BiztalkHidden引用
目标位于Biztalk生成脚本中。这个特定的目标试图添加额外的程序集,包括上面复制的程序集。
然而
,它使用“mscoree.dll”中的getcorsystemdirectory,该目录返回加载到进程中的公共语言运行时(clr)的安装目录,在本例中,加载到msbuild中的4.0框架;因此,帮助程序认为它没有引用System.xml程序集并添加它,因此是重复的。