【发布时间】:2010-05-11 12:38:11
【问题描述】:
谁能阐明 TFS2010 (RC) Microsoft.TeamFoundation.Build 目标中的 CoreCompile 任务如何生成传递给 csc.exe 的程序集引用?
我们看到对 System.Xml.dll 的 2.0 和 4.0 版本的引用(以下以粗体显示),但是我们在项目程序集引用上使用了“特定版本:true”标志和 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 框架微软构建;结果,助手认为它没有引用 System.Xml 程序集并添加它,因此重复。
【问题讨论】:
-
如果没有将 System.Xml.dll 的特定版本设置为 true,会有什么行为?
-
它没有似乎有任何区别。
-
我不明白的地方:你引用 System.Data.dll v4 和 System.Web.Services.dll v4 吗?
-
madgnome:不,我没有;事实上,我已经将它追溯到 BizTalk 'AddBizTalkHiddenReferences' 目标中的一个模糊错误。请参阅上面的更新。非常感谢您的帮助。
-
干得好!这是一个偷偷摸摸的
标签: msbuild biztalk biztalk-2009 csc