【发布时间】:2011-05-02 22:12:07
【问题描述】:
迄今为止的故事
我有一个很好的解决方案,其中包含一个桌面应用程序项目、几个库项目和几个开发工具项目(也是桌面应用程序)。目前,我的构建服务器将所有代码输出到一个OutputPath。所以我们最终得到了
drop-x.y.z\
Company.MainApplication.exe <-- main application
Company.MainApplicationCore.dll <-- libraries
Helper.exe <-- developer tools
Grapher.exe
Parser.exe
... <-- the rest of the output
但是,我们正在成长,我们团队以外的人希望使用我们的工具。所以我想组织输出。我决定我们想要的是每个可执行项目都有一个不同的OutputPath
drop-x.y.z\
Company.MainApplication\
Company.MainApplication.exe <-- main application
Company.MainApplicationCore.dll <-- libraries
... <-- application specific output
Helper\
Helper.exe <-- developer tools
... <-- tool specific output
Grapher\
Grapher.exe
...
Parser\
Parser.exe
...
我做了什么
我发现了这个简单的命令。我喜欢它,因为它保留了所有使 msbuild 痛苦的解决方案工作目录上下文。
msbuild /target:<ProjectName>
例如,从我的解决方案根目录作为工作目录,我会调用
PS> msbuild /target:Helper /property:OutputPath="$pwd\out\Helper"
我正在通过 PowerShell 对此进行测试,以便 $pwd 解析为我的工作目录的完整路径,或者在这种情况下为解决方案根目录。我得到了我想要的输出。
但是,当我运行这个命令时
PS> msbuild /target:Company.MainApplication /property:OutputPath="$pwd\out\Company.MainApplication"
我得到以下错误输出(没有更多信息,我用/verbosity:diagnostic 运行)
项目中不存在目标“Company.MainApplication”。
我需要什么
该命令在名称中包含一个或多个点的任何项目上都会失败。我尝试了许多工作目录和属性的组合。我尝试了几种转义属性值的方法。我还尝试从目标文件中的<Task> 运行命令。
我也需要知道
A)如何修复此命令以使其正常工作
B)如何以最小的摩擦实现相同的输出
【问题讨论】:
标签: msbuild