用于TFS构建的NuGet资源库

时间:2018-05-08 20:27:55

标签: tfs msbuild nuget nuget-package

我无法找到一个明确的答案。我们有TFS 2015,并希望使用自定义NuGet Respository来存储我们的内部包。

目前,它们驻留在与TFS安装相同的服务器上的物理驱动器上。然而,它总是找不到任何包。

我的困惑在这里出现了。为了将此目录用作Nuget存储库,我们是否需要安装其他软件或生成一些index.json?文件夹中存在的包不够用吗?我看过很多文章都在谈论Package Management插件(成本超过5人)或升级到2017年TFS。

我的理解是正确的,只是将包保存在服务器可以访问并指向它的位置是不够的?

谢谢!

2 个答案:

答案 0 :(得分:1)

<强>更新

根据BehemothDan的下面的评论,通过在IIS中的服务器上安装Nuget.Server作为应用程序来解决此问题。只需提供一个URL而不是目录路径的TFS构建过程,一切都很好。 (将Nuget.Server指向目录)

正如Daniel所说“NuGet将使用该包源。与TFS无关。所有构建系统都在命令行上运行。”

所以,你只需要设置源:

  1. 创建Local feed nuget存储库,这可以是共享文件夹 可以通过TFS访问。)
  2. 将所需的包下载/复制到repo文件夹。
  3. nuget.config中设置包源或直接添加源 Visual Studio。
  4. 因此,当您在TFS中构建时,nuget将识别源并自动恢复包。

    您可以参考这篇文章来理解:

    Creating a local NuGet repository for offline development

    此外,TFS在TFS 2017及更高版本中引入了Package Management功能。

    因此,如果升级到TFS 2017或更高版本,您可以直接管理TFS中的软件包。

    有关详细信息,请参阅Get started with NuGet Package Management in VSTS and TFS

    您还可以将此文章引用到Publish to Private NuGet Server from TFS2017 Build

答案 1 :(得分:1)

如果您的构建在TFS上无法正常运行,则意味着与本地计算机相比,TFS上的文件夹(或依赖项)结构不同。在这种情况下,TFS代理尝试在TFS上编译源代码而不是查找依赖项。

为了将目录用作Nuget仓库,您不需要安装任何东西,但确定您应该知道一些事情。您有两种方法可以引用您的包:您可以使用Package引用,使用PackageReference节点,它可以直接在项目文件中管理NuGet依赖项,其次,而不是它,Packages.config节点,它将配置保存在.config文件中

enter image description here

最重要的是PackageReference用于.NET Core项目,那么你想要构建哪种项目?

  

.NET完整框架项目支持PackageReference,但目前默认为packages.config

我的建议是: - 如果您正在处理.netcore项目,请使用PackageReference并打开您的解决方案,并查看您的所有依赖项是否指向

%系统​​驱动%\用户\ .nuget

为了正确编译,应该在TFS上使用相同的路径,出于优化原因,您不应该将此文件夹移动到另一个文件夹,因此如果您负责TFS监视器C盘的空间,因为它可以增长成倍。

- 如果你没有处理.NetFramework,而不是Core,那么你应该创建一个本地回购,因为@Andy Li-MSFT说。我建议你读一下我刚才在这里发布的这个答案: https://stackoverflow.com/a/43791395/819153