【发布时间】:2015-03-03 20:39:42
【问题描述】:
我有两个项目,它们在同一位置使用相同的代码,但使用不同的依赖项和 app.config 文件,并且两个项目都编译为相同的 exe 名称。
目前,我配置了一个 PreBuild 脚本,它将正确的文件从 project_a.config 或 project_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