【问题标题】:Rename app.config重命名 app.config
【发布时间】:2015-03-03 20:39:42
【问题描述】:

我有两个项目,它们在同一位置使用相同的代码,但使用不同的依赖项和 app.config 文件,并且两个项目都编译为相同的 exe 名称。

目前,我配置了一个 PreBuild 脚本,它将正确的文件从 project_a.configproject_b.config 复制到 app.config

不幸的是,XBuild 在命令行运行时不执行 PreBuild 脚本,所以我必须在构建之前进行复制。

有没有办法使用另一个文件作为 app.config?

编辑: 请注意,这仅在 Linux 上运行。

我的 csproj 文件中的条目:

 <Command type="BeforeBuild" 
   command="cp -f MonoMultiJack.Linux.config app.config"
   workingdir="${ProjectDir}" />

这是我的构建脚本:

#!/bin/bash
XBUILD=xbuild
SOLUTION=MonoMultiJack.Lnx.sln
# do some other stuff
${XBUILD} ${SOLUTION} /p:Configuration=Release /t:Clean
${XBUILD} ${SOLUTION} /p:Configuration=Release

【问题讨论】:

  • 你从哪里得到这样的假设“不幸的是,XBuild 在从命令行运行时不执行 PreBuild 脚本,所以我必须在构建之前进行复制。”从?
  • @knocte:我已经测试过了:XBuild 在使用${XBUILD} ${SOLUTION} /p:Configuration=Release 运行之前不会将文件复制到 app.config。这也在网络上被引用,例如wiki.directproject.org/share/view/25772231
  • 该页面上出现的示例是一个不跨平台的命令,所以原因不是xbuild doesn't run PreBuild scripts,而是您必须确保这些脚本是跨平台的!否则它们只能在一个平台上工作

标签: c# monodevelop xbuild


【解决方案1】:

不幸的是,XBuild 不执行 PreBuild 脚本时 从命令行运行,所以我必须先进行复制 建设。

你的这个假设是错误的。 PreBuild 事件在 xbuild 中可以正常工作,就像在 MSBuild 中一样。不行的是非跨平台的脚本,比如使用cmd.execopy命令(在Unix中称为cp),这些脚本只存在于Windows中。

为防止出现此问题,您需要在 xbuild 中使用 MSBuild 条件,例如 here 中解释的那些。

【讨论】:

    猜你喜欢
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多