在TFS中的MSBuild PostBuildEvent中使用mklink命令

3

我的.csproj文件定义了以下的后期构建事件,用于重新生成符号链接。在手动使用Visual Studio进行构建时,这可以正常工作,并且符号链接可以成功地重新生成:

 <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”。
如何通过自动化构建重新生成符号链接?

你是在使用旧的 XAML 构建还是新的 vNext 构建? - Cece Dong - MSFT
您能否在构建代理机器上手动使用MSBuild运行项目?是否有更多的错误信息?您是否检查过路径在构建代理机器上是否有效? - Cece Dong - MSFT
我正在使用新的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" exited with code 1. 从msbuild.exe收到意外的退出代码:1我已验证所有路径是否存在/是否有拼写错误。我认为这可能与mklink需要“以管理员身份运行”的权限来创建符号链接有关。是否有任何方法可以在MSBuild中掩盖<PostBuildEvent>? - NewJoizey
1个回答

3

我通过在csproj文件中将变量$(BuildingInsideVisualStudio)设置为true来解决了这个问题,具体如下:

<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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接