2016-06-23 9 views
1

My .csproj определяет следующее событие post build в файле .csproj, который восстанавливает символическую ссылку. Это прекрасно работает внутри с ручным Visual Studio сборкой и символические получает регенерировать без выпуска:с использованием команды mklink внутри MSBuild PostBuildEvent в TFS

<PostBuildEvent> 
    del C:\foo\foo\bin\debug\my.config 
    mklink C:\bar\bar\bar\bar\bar\bar\bin\debug\my.config c:\baz\baz\my.config 
</PostBuildEvent> 

Однако, я пытаюсь настроить непрерывную интеграцию с использованием TFS2015 с автоматизированными строит с использованием MSBuild, однако в этом случае, сборки сбой "с командой mklink C: \ bar \ bar \ bar \ bar \ bar \ bar \ bin \ debug \ my.config c: \ baz \ baz \ my.config завершена с кодом 1 '.

Как я могу восстановить символическую ссылку через автоматическую сборку?

+0

Вы используете старую XAML сборку или новый vNext строить? –

+0

Можете ли вы запустить проект с помощью MSBuild вручную на машине агента сборки? Есть ли больше сообщений об ошибках? Вы проверили, действителен ли путь на вашей машине агента сборки? –

+0

Я использую новую сборку vNext, и я пытаюсь запустить вручную или разрешить CI запускать сборку. Сообщение об ошибке одно и то же: точный синтаксис: del C: \ foo \ foo \ bin \ debug \ my.config mklink C: \ bar \ bar \ bar \ bar \ bar \ bar \ bin \ debug \ my.config c: \ baz \ baz \ my.config "завершен с кодом 1. Получен неожиданный код выхода from msbuild.exe: 1 Я проверял, что все пути существуют/нет орфографических ошибок. Я думаю, что это может иметь какое-то отношение к mklink, требующему права «запускать как администратора» для создания символической ссылки. Есть ли способ маскировать a в MSBuild? – NewJoizey

ответ

1

Я решил, установив переменные $ (BuildingInsideVisualStudio) к истинному внутри моего файл csproj следующим образом:

<PropertyGroup Condition="'$(BuildingInsideVisualStudio)' == 'true'"> 
    <PostBuildEvent> 
     del C:\foo\foo\bin\debug\my.config 
     mklink C:\bar\bar\bar\bar\bar\bar\bin\debug\my.config c:\baz\baz\my.config 
    </PostBuildEvent> 
</PropertyGroup> 

Я видел это как возможный ответ в другом месте, однако посты я видел показал некорректным синтаксис и не ясно иллюстрируют, как использовать переменную в контексте скрипта сборки csproj. Надеюсь, это выяснится для кого-то.

В этой статье MSDN был полезен: https://msdn.microsoft.com/en-us/library/ms171468(v=vs.140).aspx