【问题标题】:Team Build - Replace Project References with dll'sTeam Build - 用 dll 替换项目引用
【发布时间】:2010-02-08 16:03:44
【问题描述】:

以下情况:

  • 2 个团队项目
  • 团队项目 A 的开发将团队项目 B 的项目参考添加到他们的项目中。

为了加快构建速度,我想将项目引用替换为直接引用 dll。

我的想法:

在 Team Project A 的 csproj 中:

<ProjectReference Condition="'$(IsDesktopBuild)' == 'true'" Include="[Project Reference] >...

在 TFSBuild.proj 中

<AdditionalReferencePath Include="[buildoutputOfTeamProjectB]" />

禁用 SolutionToBuild 并直接使用 csproj 文件。

感谢您的建议。

【问题讨论】:

    标签: msbuild tfsbuild


    【解决方案1】:

    我建议每个项目都有一个依赖文件夹,其中包含每个项目所需的相应 dll。构建依赖的项目时,是否通过构建过程(巡航控制/nant/msbuild?)自动更新依赖项文件夹中的 dll 取决于您。但是,我也会考虑部署依赖 dll 的版本,以防万一您破坏了该 dll 的依赖项目使用。如果有人更新他们的项目(依赖的项目)、启动构建、将构建输出部署到依赖的项目)只会破坏依赖于他们代码库的项目,这会很糟糕。这听起来像是一种管理依赖项的脆弱方式。

    【讨论】:

    • 嗨,安德鲁,我们正在使用 MSBuild/TFSBuild。开发人员希望使用项目引用来更轻松地更改 lib 项目,而无需切换 2 个解决方案。但这会导致 TFS 上的构建过程过多。因此,我需要一种从 csproj 文件中删除项目引用并将其替换为 dll 引用的方法。
    • 我们已经有一个包含共享构建输出的文件夹,但是当我使用 IsDesktopBuild 条件删除项目引用时,似乎无法配置 csproj 以使用它们。
    • 我们目前正在做的是有专门的解决方案。在您的情况下,您可能有一个 ProjectA 的解决方案,一个 ProjectB ......以及一个同时包含 ProjectA 和 ProjectB 的解决方案。拥有多种解决方案应该不是问题。与其在你的项目文件中做很酷的逻辑,也许你的本地构建脚本应该负责根据环境生成你的项目/解决方案文件。了解构建运行的环境比在项目文件中嵌入逻辑更容易!
    • 项目中的项目引用和包含来自其他解决方案的项目的解决方案不同。我看到的唯一一件事是我必须将项目配置为使用 dll 而不是项目引用才能在两种解决方案中构建它。但这不会导致项目 B 的 dll 必须在本地机器上构建,然后源代码更改才会影响项目 A 的引用 dll 的缺点吗?
    猜你喜欢
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 2017-09-24
    • 2011-08-12
    • 1970-01-01
    • 2012-02-20
    相关资源
    最近更新 更多