【问题标题】:Dependency management with TFS 2010使用 TFS 2010 进行依赖管理
【发布时间】:2011-09-18 21:55:12
【问题描述】:
使用 TFS 2010 管理依赖项的最佳方法是什么?
编辑:
我想知道是否有诸如 Maven 或 NuGet 之类的系统可以轻松管理 TFS 2010 中的 .dll(外部或由我们的团队创建)的依赖项。
但是我们面临的问题是,我们希望能够修改我们的 dll 的代码并实时测试它们是否有效(无需发布新包)。
【问题讨论】:
标签:
visual-studio-2010
tfs
dependency-management
【解决方案1】:
调用 NuGet 作为预构建步骤实际上非常容易。您可以使用 NuGet 引用覆盖项目的 *.*proj 文件中的 BeforeBuild 目标。
<Target Name="BeforeBuild">
<Exec Command=""$(SolutionDir)Tools\nuget" install "$(ProjectDir)packages.config" -o "$(SolutionDir)Packages"" Condition="'$(BuildingInsideVisualStudio)'==''" />
</Target>
正如上面的 sn-p 所暗示的,您需要下载 NuGet command line utility,将其放在解决方案文件夹下的文件夹中,然后将其签入版本控制。请注意,您下载的可执行文件实际上是一个引导程序,您需要运行一次以下载 real 可执行文件。
接下来,您需要检查项目目录中的 packages.config 文件,而不是解决方案目录下的 packages 文件夹。请注意,我已经在上面的预构建步骤中检查了 $(BuildingInsideVisualStudio) 以 not 设置。当使用 TFS 构建服务(或从命令行)构建时,这将导致在构建时下载和安装包。它不会影响您在 Visual Studio 中的 NuGet 体验。
您可以搜索有关使用 TFS 自动创建 NuGet 包的文章 - 很多人都写过有关它的博客。两者的结合构成了一个非常强大的依赖管理解决方案。现在我们只需要一个内置到 TFS 中的 NuGet 提要;)。
【解决方案3】:
当您在 TFS 2010 中创建持续集成构建时,只要在与为构建定义的工作区匹配的源代码管理文件夹之一中签入某些内容,就会触发构建。您可以尝试为您使用的 DLL 创建一个源代码管理文件夹,然后将该文件夹包含在每个需要它们的项目的工作区中。
当您定义 CI 构建并签入其中一个 DLL 的新版本时,这将触发所有使用 DLL 的项目的 CI 构建。当然,CI 构建不仅会构建代码,还会运行单元测试。