У меня проблема с TFS2013 с использованием Team Build, которая выполняет сборку, а затем публикует веб-сайт.
Все работает нормально, когда я публикую веб-сайт со своего компьютера разработчика с помощью VS2013 и (щелкните правой кнопкой мыши) Publish Web вариант сайта для проекта веб-сайта. На сервере сборки TFS2013 появляется следующая ошибка:
C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ Web \ Transform \ Microsoft.Web.Publishing.AspNetCompileMerge.targets (421,5): ошибка:
**Can't find the valid AspnetCompilerPath** [C:\Builds\3\Web\Development to WebDev\Sources\Web\Website\Development\ASP.NET\App\website.publishproj]
Done Building Project "C:\Builds\3\Web\Development to WebDev\Sources\Web\Website\Development\ASP.NET\App\website.publishproj" (default targets) -- FAILED.
**
Я использую следующие аргументы MSBuild в настройке Team Build.
/p:DeployOnBuild=true;VisualStudioVersion=12.0;DeployTarget=WebFileSystemPublish;PublishProfile=Development
Веб-преобразование разработки отлично работает на сервере сборки в ответ на аргумент PublishProfile = Development. Файл Web.Config правильно преобразован для нашей среды разработки. Как указано в аргументе MSBuild, я использую опцию публикации FileSystem и хочу сохранить ее в таком виде.
Я изменил сервер сборки C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ Web \ Transform \ Microsoft.Web.Publishing.AspNetCompileMerge.targets ', чтобы регистрировать некоторые свойства, как показано ниже в Target' ConfigureForAspNetPreCompileMerge ':
<Message Text="[TargetFrameworkVersion]: $(TargetFrameworkVersion)" />
<Message Text="[AspnetCompilerPath]: $(AspnetCompilerPath)" />
<Message Text="[Framework40Dir]: $(Framework40Dir)" />
<Message Text="[MSBuildToolsRoot]: $(MSBuildToolsRoot)" />
<Message Text="[MSBuildRuntimeVersion]: $(MSBuildRuntimeVersion)" />
Которая записывает следующую информацию в файл website.log для Team Build: ConfigureForAspNetPreCompileMerge:
[TargetFrameworkVersion]: v4.0 [AspnetCompilerPath]: [Framework40Dir]: C: \ Program Files (x86) \ MSBuild \ v4.0.30319 [MSBuildToolsRoot]: C: \ Program Files (x86) \ MSBuild \ [MSBuildRuntimeVersion]: 4.0. 30319
[Framework40Dir] отличается от моего локального компьютера, регистрирующего те же данные в той же цели MSBuild:
12> Параметр задачи: Text = [TargetFrameworkVersion]: v4.0 12>
[TargetFrameworkVersion]: v4.0 12> Параметр задачи: Text = [AspnetCompilerPath]: 12> [AspnetCompilerPath]: 12> Параметр задачи: Text = [Framework40Dir]: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 12> [Framework40Dir]: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 12> Параметр задачи: Text = [MSBuildToolsRoot]: C : \ Program Files (x86) \ MSBuild \ 12> [MSBuildToolsRoot]: C: \ Program Files (x86) \ MSBuild \ 12> Параметр задачи: Text = [MSBuildFrameworkToolsRoot]: C: \ Windows \ Microsoft.NET \ Framework \ 12 >
[MSBuildFrameworkToolsRoot]: C: \ Windows \ Microsoft.NET \ Framework \ 12>
Параметр задачи: Text = [MSBuildRuntimeVersion]: 4.0.30319 12>
[MSBuildRuntimeVersion]: 4.0.30319
Значение TeamBuild для [Framework40Dir]: 'C: \ Program Files (x86) \ MSBuild \ v4.0.30319' по сравнению с моей локальной машиной DEV: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319
Это кажется очень необычным.
Я также изменил файл TeamBuild: 'C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ Web \ Transform \ Microsoft.Web.Publishing.AspNetCompileMerge.targets', чтобы вручную установить свойство Framework40Dir как 'C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319', но это, кажется, вешает весь процесс TeamBuild, когда он доходит до этой точки, и запускает Team Build навсегда, пока я не остановлю его вручную.
Это то же решение, что и здесь: Сервер сборки TFS не может заставить работать профиль публикации: не могу найти действительный путь AspnetCompilerPath, но у меня он не работает. Эта проблема идентична моей проблеме.
На сервере сборки установлена последняя версия TFS2013.3. У меня не установлена Visual Studio 2013 на этом компьютере, и я бы очень хотел этого не делать. Я читал, что VS не нужен для TFS Team Builds.
Я очень благодарен за помощь в этом вопросе ..... Спасибо.