【问题标题】:msbuild a project referencing projects with different configurationsmsbuild 一个项目引用具有不同配置的项目
【发布时间】:2012-06-26 21:45:47
【问题描述】:

我有一些依赖于其他项目的 Visual Studio 项目,这些项目具有不同的配置。

example:
Project MyProject (Configuration: Release)
  References:
    Project LibA (Configuration: Release_DontLink)
    Project LibB (Configuration: Release

使用 Visual Studio 构建可以正常工作,因为用于不同项目的配置存储在解决方案文件中。

但是当我使用 msbuild 构建 MyProject 时,它构建了 LibA 的 Release 配置,这是不正确的。由于 LibA 和 LibB 都被许多其他项目使用,我无法更改这些配置,我只能控制 MyProject。

有没有什么方法可以在不更改 LibA 和 LibB 项目的情况下使用 MsBuild 构建 MyProject?

可能相关的问题:Configuration for ProjectReference in MSBuild,但是我没有完全理解答案,我认为这需要我更改 LibA/LibB

【问题讨论】:

    标签: visual-studio-2010 visual-c++ msbuild


    【解决方案1】:

    在解决方案级别(即:MyProject.sln),打开属性页并设置Release 配置以为项目LibA 构建Release_DontLink 配置。如果您无法控制 sln 文件,您应该能够创建它的副本(即:MyProject.Release.sln)。

    然后构建解决方案:

    msbuild MyProject.sln /p:Configuration=Release
    

    或者(甚至不是最佳实践),在构建 MyProject 之后构建 LibA 并覆盖其 OutDir 属性:

    msbuild LibA.csproj /p:Configuration=Release_DontLink;OutDir=..LibA\Release
    

    【讨论】:

    • 这就是我已经在做的事情......这导致 LibA 也使用 Release 构建,而它应该使用 Release_DontLink 构建
    • 是的,在解决方案文件上调用 msbuild 可能会起作用,目前我调用它来构建 MyProject.vcxproj。我需要制作一些额外的解决方案文件,但这没关系。我明天试试这个。
    • 好的,这行得通。我必须创建一个新的解决方案 MyProject.sln,因为我的主要解决方案包含更多项目,我不想在每次构建 MyProject 时都构建这些项目,但它的缺点是我现在必须维护 2 个解决方案(如果我添加MyProject 的附加依赖项,我必须手动将其添加到两个解决方案中)
    • 对于任何对此感兴趣的人,您似乎可以通过指定 /t:[project_name] 开关 stackoverflow.com/questions/13915636/… 来避免维护 2 个解决方案文件,例如,如果 LibB 依赖于 LibA,您可以这样做 @ 987654332@
    【解决方案2】:

    我刚遇到同样的问题,发现所有配置的平台都需要做解决方案配置。

    【讨论】:

      猜你喜欢
      • 2018-09-07
      • 2015-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多