如何使MSBuild引用正确的程序集?

时间:2009-06-23 09:54:21

标签: visual-studio tfs msbuild

我正在尝试让MSBuild处理刚刚转移到TFS2008的项目。解决方案是巨大的,因此它分为5个团队项目,A-E。每个人只有一个解决方案,但有几个项目。 A首先建立B-E。我们需要构建所有内容的调试版本和发布版本,这很好,但是当我们在发布模式下编译A时,它使用B-E的调试版本。查看了A中项目的proj文件后,它们的程序集引用已设置为指向B-E中库的调试版本。有没有办法使用MSBuild proj文件来发布B-E中项目的发布版本? 到目前为止,我已经尝试添加
<PropertyGroup>
<AssemblySearchPaths>
$(Configuration)
$(AssemblySearchPaths)
</AssemblySearchPaths>
</PropertyGroup>
到MSBuild proj文件,但它没有任何区别。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

(如果您想在.prof文件中完成所有操作,这是另一种选择)

您可以为每个属性组设置各种配置的参考路径。

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <ReferencePath>c:\blah\blah\Path\To\Debug\</ReferencePath>
</PropertyGroup>

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <ReferencePath>c:\blah\blah\Path\To\Release\</ReferencePath> </PropertyGroup>

您应该已经在.proj文件中有条件属性组,所以只需添加refernece路径位给他们。您可以使用半冒号分隔多个路径。

答案 1 :(得分:2)

我认为您可以这样做:

<PropertyGroup>
    <SomeReferencePath>..\Your\Other\Build\Path\</LibraryReference>
</PropertyGroup>
然后将其包含在目标中:
Properties="ReferencePath=$(SomeReferencePath)"
这将指示编译器查看该引用路径以解析其引用的程序集。

我认为= :))

[编辑:这将全部包含在构建所有子项目的新msbuild脚本中。]