【问题标题】:Using NuGet for Internal & External Dependencies in TFS将 NuGet 用于 TFS 中的内部和外部依赖项
【发布时间】:2011-12-03 04:21:56
【问题描述】:

我目前正在寻找 NuGet 来解决我在 TFS 中的依赖问题,我想做的是托管我自己的 NuGet 服务器来处理内部依赖关系。我还想使用 NuGet 来处理我的第 3 方依赖项。我正在尝试为我们公司设置自动化构建,这是我尝试使用 NuGet 克服的一个障碍。

所以我的问题是如何处理这种我必须从不同服务器检索我的依赖项的情况?

有没有更好的方法来处理内部依赖?其他人是怎么做到的?

另外,我打算在不将包提交到 TFS 的情况下使用 NuGet。我打算使用本文中的方法大纲:

http://blog.davidebbo.com/2011/08/easy-way-to-set-up-nuget-to-restore.html

【问题讨论】:

    标签: version-control tfs nuget tfsbuild nuget-server


    【解决方案1】:

    很高兴您正在研究 TFS 上 NuGet 包的 无提交 方案。你可以看一下my blog post这个话题,我解释了这个概念。

    编辑 (2012/06/13):NuGetPowerTools 被 NuGet 的内置包还原功能取代。但是,在 nuget.targets 中更改 PackageSources 元素的相同概念仍然适用。

    你绝对应该看看大卫福勒的NuGetPowerTools。 安装完这个包后,可以Enable-PackageRestore(Package Manager Console中新安装的命令),里面会添加... 启用包还原会将 MSBuild 目标添加到您的项目文件中。这些 MSBuild 目标将在预构建步骤中触发 nuget.exe 并获取项目所需的任何包。 无需在源代码管理中签入 NuGet 包,您只需要 packages.config 和这些 msbuild 任务即可。

    要配置多个不同的包源,您需要设置一些设置以供这些 MSBuild 任务使用。其中之一是 PackageSources。您可以通过编辑 NuGet.targets 文件来设置它,启用包还原后,您将在 .nuget 文件夹中找到该文件。

    关于这些包源,您可以设置不同的内部 NuGet 库,或者简单地设置不同的网络共享以供使用。这是要求和偏好的问题,因此您可以选择。您需要做的就是告诉您的 msbuild 目标使用这些包源。您定义它们的顺序也将是查找包的顺序。

    祝你好运! 泽维尔

    【讨论】:

    • +1 我会试试这个。感谢您的输入。您目前正在使用这种策略吗?
    • 不客气!我是。这只是故事的消费部分,这是你所要求的。还有一些方法可以在构建后自动生成包。
    • 因此,当您想从具有 nuget 包的项目中调试您的内部 dll 时,您是否只需将引用更改为指向调试版本,或者是您的项目的调试设置拉调试以某种方式依赖?这是我认为拥有这种系统的缺点之一。
    • 好问题!由于您使用的是具有内置符号服务器的 TFS,因此有一条出路。如果您的内部 dll 在自动构建过程中将其符号发布到符号服务器,并且消费项目被配置为使用此符号服务器(Visual Studio 选项),那么消费项目将能够单步执行您的代码,就像他们有pdb 在本地。 (非 tfs 用户,可以使用私有 symbolsource.org 存储库并发布 nuget 符号包)。这个设置对我有用。
    • 消费者需要对他们想要单步执行的内部 dll 的源具有读取权限。使用内置符号服务器时会自动应用 TFS 源代码控制安全性。总结一下:如果您没有对源代码的读取权限,您将无法逐步浏览它们,我认为这是有道理的 ;-)
    【解决方案2】:

    接受的答案和问题的更新:

    当在没有安装 Visual Studio 的情况下将 TFS 用作构建机器时,您可以执行以下操作,以便构建机器自动使用您的自定义 packageSources(在同一解决方案中超过 1 个),而无需在您的解决方案中进一步配置 packagesources。

    1. 通过使用来自http://docs.nuget.org/docs/reference/nuget-config-file 的示例将 NuGet.Config 放置在根 (C:\NuGet.Config) 中来创建机器默认配置:

    2. 注释掉:<add key="repositorypath" value="$\External\Packages" />

      否则你的包会在 C:\$\External\packages\' 中扩展。注释掉后,配置会被链接起来,并且会使用正确的目录。

    3. 配置您需要的包源。

    有关其他选项(例如用户特定)的更多信息,请参阅:http://docs.nuget.org/docs/reference/nuget-config-file(页面底部)。

    【讨论】:

      猜你喜欢
      • 2012-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-05
      • 2023-04-01
      • 2013-05-10
      • 2019-03-19
      • 1970-01-01
      相关资源
      最近更新 更多