【问题标题】:using mklink command inside an MSBuild PostBuildEvent in TFS在 TFS 的 MSBuild PostBuildEvent 中使用 mklink 命令
【发布时间】:2016-10-26 10:05:16
【问题描述】:

我的 .csproj 在重新生成符号链接的 .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 版本?
  • 您能否在构建代理机器上手动使用 MSBuild 运行项目?是否有更多错误信息?您是否检查过路径在您的构建代理机器上是否有效?
  • 我正在使用新的 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。意外从 msbuild.exe 收到的退出代码:1 我验证了所有路径都存在/没有拼写错误。我认为这可能与 mklink 需要“以管理员身份运行”权限来创建符号链接有关。有什么办法可以在 MSBuild 中屏蔽

标签: msbuild symlink tfs-2015 post-build-event mklink


【解决方案1】:

我通过以下方式在我的 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

【讨论】:

    猜你喜欢
    • 2015-03-31
    • 1970-01-01
    • 2014-03-04
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    相关资源
    最近更新 更多