Может ли кто-нибудь пролить свет на то, как задача CoreCompile в TFS2010 (RC) для Microsoft.TeamFoundation.Build создает ссылки на сборки, которые передаются в csc.exe?
Мы видим ссылки как на версию 2.0, так и на 4.0 файла System.Xml.dll (выделено жирным шрифтом ниже), однако мы используем флаг «Определенная версия: истина» в ссылках сборки проекта и в файле 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 : Хорошо, я отследил это до неясной ошибки в цели AddBizTalkHiddenReferences в скриптах сборки BizTalk. Эта конкретная цель пытается добавить дополнительные сборки, в том числе те, которые были продублированы выше.
Однако , он использует GetCORSystemDirectory из 'mscoree.dll', который возвращает установочный каталог общеязыковой среды выполнения (CLR), который загружен в процесс, в данном случае платформа 4.0, загруженная в MSBuild ; в результате помощник не думает, что на него ссылается сборка System.Xml, и добавляет его, следовательно, дубликат.