【问题标题】:Visual Studio msbuild视觉工作室 msbuild
【发布时间】:2010-04-20 03:08:15
【问题描述】:
我对 msbuild 的命令行选项有疑问。我是
目前正在使用 msbuild 使用现有解决方案构建项目
文件。这些解决方案文件引用了具有
每台机器上的不同路径。我目前正在编写构建脚本
并通过 /p: 开关将特定路径传递给项目文件
msbuild.
我当前的构建线是:
msbuild test.sln /p:ReferencePath="c:\abc" /p:ReferencePath="c:\rca"
我注意到参考路径现在只包含 c:\rca 和
不是 c:\abc。这给我带来了问题,因为外部 dll
位于两个不同的目录中。我可以保留多个
通过 Visual Studio 引用路径,而不是通过命令行。
有什么已知的方法可以做到这一点
【问题讨论】:
标签:
visual-studio
msbuild
【解决方案1】:
我相信你可以使用这个 /p:ReferencePath="c:\abc;c:\rca"
至少这是link 所暗示的,他们正在使用 %3B 对“;”进行编码在构建文件中。
【解决方案2】:
虽然上面列出了提供更多一个引用路径的正确语法,但我建议解决根本原因,在我看来是引用程序集的不同位置。我建议您将所有第三方依赖项(除了框架程序集)放在源代码存储库中,原因如下:
- 计算机之间的相对路径是一致的
- 源代码始终与您的第三方程序集的正确版本一起保存(例如,如果您需要在 2 年后构建您的软件的旧版本)。
- 升级第三方程序集就像在一台机器上升级然后将更改提交到存储库一样简单。 (在之前的项目中,我们甚至检查了整个 Java 运行时环境,并且对给定的设置非常满意。)
【解决方案3】:
尝试用分号 (;) 分隔路径
像这样:
c:\abc;c:\rca
【解决方案4】:
跨机器同步库可能会更好。我发现 Visual Studio 让这一切变得简单。只需添加一个解决方案文件夹,然后在其中添加您的库。然后,在每个项目中,从这个公共位置引用库。这样,每个开发人员都可以将它们放在同一个地方。
这将删除您在尝试编写构建脚本时拥有的变量之一。
【解决方案5】:
用于设置参考路径的命令行选项可以正常工作(假设您转义了分号,似乎 %3B 和 &#59; 都可以工作)。但是,当从 nant 传入参数时(并且我需要多个路径),创建“Visual Studio 项目用户选项文件”似乎效果更好。
我只是用以下格式向文件系统发出(回显)一个文件:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ReferencePath>
C:\abc;c:\rca
</ReferencePath>
</PropertyGroup>
我给 *.user 文件一个合适的名称(给定一个项目文件 MyProject.csproj,我的用户文件将是 MyProject.csproj.user)