26.09.2017

TFS XAML сборка C# 7

Входные данные:

- старый TFS с настроенными XAML-определениями сборок
- проект с использованием C# 7

Задача:

- заставить TFS билдить проект

Решение.

1. Установить на TFS-сервер Visual Studio Build Tools 2017

2. Отредактировать XAML-определение сборки (файл DefaultTemplate.12.0.xaml или другой), добавив внутрь элемента (элементов) mtbwa:MSBuild свойство ToolPath с указанием пути к новой версии MSBuild. Выглядеть это должно примерно так:
<mtbwa:MSBuild CommandLineArguments="[String.Format(&quot;/p:SkipInvalidConfigurations=true {0}&quot;, MSBuildArguments)]" Configuration="[platformConfiguration.Configuration]" DisplayName="Run MSBuild for Project" GenerateVSPropsFile="[True]" sap2010:WorkflowViewState.IdRef="MSBuild_1" MaxProcesses="[If (MSBuildMultiProc, 0, 1)]" OutDir="[BinariesDirectory]" Platform="[platformConfiguration.Platform]" Project="[localBuildProjectItem]" mva:VisualBasic.Settings="Assembly references and imported namespaces serialized as XML namespaces" Targets="[New String() { &quot;Clean&quot; }]" TargetsNotLogged="[New String() {&quot;GetNativeManifest&quot;, &quot;GetCopyToOutputDirectoryItems&quot;, &quot;GetTargetPath&quot;}]" ToolPath="c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\" ToolPlatform="[MSBuildPlatform]" Verbosity="[Verbosity]" />

3. По мере надобности или при возникновении соответствующей ошибки поправить в солюшне файл msbuild.xml, указав правильный путь к библиотеке Microsoft.Web.Publishing.Tasks.dll:

<UsingTask TaskName="TransformXml" AssemblyFile="c:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.Tasks.dll" />