2009-02-27 107 views
0

我有一个关于msbuild的命令行选项的问题。我是 目前使用msbuild来建立使用现有解决方案 文件的项目。这些解决方案文件引用了每台机器上具有不同路径的外部dll。我目前正在编写一个构建脚本 ,并通过msbuild的/ p:开关将特定路径传递给项目文件。Visual Studio msbuild

我当前构建行是: 的MSBuild test.sln/P:ReferencePath = “C:\ ABC”/ P:ReferencePath = “C:\ RCA”

我已经注意到,参考路径现在包含只有c:\ rca和 不是c:\ abc。这对我造成了一些问题,因为外部DLL 位于两个不同的导演中。我可以通过visual studio保留多个 参考路径,但不能通过命令行。

是否有任何已知的途径,使我可以做到这一点

回答

4

我相信你可以使用这个/ P:ReferencePath = “C:\ ABC; C:\ RCA”

至少那是什么link暗示,他们正在使用%3B来编码“;”在构建文件中。

0

尝试用分号分隔条件的pathes(;)

像这样:

C:\ ABC; C:\ RCA

0

你可能是通过在同步您的库更好机器。我发现Visual Studio使这很简单。只需添加一个解决方案文件夹,并在那里添加您的库。然后,在每个项目中,引用这个共同的地方的图书馆。这样,每个开发人员都在同一个地方。

这将删除您在尝试编写构建脚本时所具有的变量之一。

3

虽然上面列出了提供更多一个参考路径的正确语法,但我建议解决根本原因,在我看来,这是您引用程序集的不同位置。我建议你把所有第三方的依赖,除了框架组件的源代码库,原因如下:

  1. Relatitve路径是跨计算机一致
  2. 源代码总是在水槽正确的版本你的第三方大会(如果你需要从现在起2年内建立一个旧版本的软件)。
  3. 升级第三方装配就像在一台机器上升级然后将更改提交到存储库一样简单。 (在以前的项目中,我们甚至竟然在整个Java运行时环境检测,并且是在给定的设置很高兴。)
0

用于设置参考路径的命令行选项会工作得很好(假设你逃脱半结肠,似乎%3B和&#59;将工作)。然而,当从nant传递参数(并且我需要多个路径)时,创建'Visual Studio项目用户选项文件'似乎效果更好。

我只是发出(回声)的文件到文件系统格式如下:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
<PropertyGroup> 
    <ReferencePath> 
     C:\abc;c:\rca 
    </ReferencePath> 
</PropertyGroup> 

我给*。用户提交一个适当的名称(给出一个项目文件MyProject.csproj ,我的用户文件将是MyProject.csproj.user)