我有两个项目,在同一位置使用相同的代码,但使用不同的依赖项和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
答案 0 :(得分:1)
不幸的是,XBuild在执行时不执行PreBuild脚本 从命令行运行,所以我必须先进行复制 建筑物。
你的这种假设是错误的。 PreBuild事件在xbuild中工作正常,就像在MSBuild中一样。什么不起作用的是一个非跨平台的脚本,例如使用cmd.exe
或copy
命令(在Unix中称为cp
),仅存在于Windows中。
要防止出现此问题,您需要在xbuild中使用MSBuild条件,例如here解释的条件。