【问题标题】:Configure TFS2015 build to understand my custom nuget repository location配置 TFS2015 构建以了解我的自定义 nuget 存储库位置
【发布时间】:2016-03-16 14:54:52
【问题描述】:

几天来,我一直在摆弄基于 TFS2015 任务的构建系统。我一直遇到的问题如下:

我正在尝试将 nuget 包用于我的项目中的外部引用。这些外部引用实际上不是第 3 方库,而只是我们公司的其他(共享)库。我能够在任务中恢复包,但我不知道如何让“Visual Studio Build”了解在哪里可以找到恢复的包。它使用项目文件中的提示路径来确定要包含的外部库的位置。但是,这些路径(在本地用于开发)与构建服务器上使用的路径不匹配。我可以为 msbuild 参数添加一个引用路径,但不会递归搜索此路径,并且 nuget 包还原会还原包,包括包的整个文件夹结构。

我的问题是。是否有一种正确的方法可以使“Visual Studio 构建”步骤了解我的包的位置,而无需更改项目文件中的提示路径。如果不是,那么去这里的正常方式是什么。我是否应该完全放弃 nuget,因为我们的引用实际上不是 3rd 方库,如果是,解决引用的替代方法是什么(不将二进制文件添加到源代码控制)

我的问题似乎与Storing nuget packages in alternate location on build server 有关,但他似乎已使用复制到引用的提示路径中指定的位置来修复它,这对我来说不是一个选项。在我看来,应该有一种简单的方法可以将 msbuild 指向库的正确位置。

【问题讨论】:

  • msbuild 步骤是否出错?我们还使用新的脚本构建系统。我们在 MSBuild 步骤之前添加了一个 NuGet 安装程序构建步骤,它似乎“正常工作”。您是使用在线 TFS (VSTS) 还是本地?
  • 我们使用本地 tfs。 msbuild 根本找不到引用,因为它在项目文件的提示路径中指定的位置查找引用。但是,此位置与构建服务器上的引用位置不同。当我强制 dll 与它们在开发机器上的位置相同时,我让 nuget 恢复工作。这可能也是适合您的原因。但是,在我们的场景中,位置不同
  • dll 不应位于自定义程序集的版本控制路径中。至少在较旧的 TFS 上
  • 这就是我要避免的重点。我已经让它在没有 dll 的版本控制中工作,但是没有在不同位置的程序集。

标签: msbuild visual-studio-2015 nuget tfsbuild


【解决方案1】:

任务还原包后,可以添加任务“Copy Files”,将包复制到“..\packages\lib\lib.dll”位置

【讨论】:

  • 是的,我相信这会奏效。但是,我很难相信这是做到这一点的最佳方式。我们是在尝试做这么奇怪的事情吗?我愿意相信更多的公司会在这类问题上苦苦挣扎
  • 经过一番研究,这是行不通的。我们在构建服务器上为所有包使用单个存储库。每次运行构建时,复制操作会将所有包的所有 dll 复制到存储库的根目录。这当然会影响性能,但更重要的是:存储库可以包含同一引用的不同版本,这会在根文件夹中相互覆盖。
  • Copy Files 只能复制文件,不需要复制所有的dll,而是复制自己需要的dll。
  • 我知道,但这意味着维护构建任务需要大量工作。每次添加/删除引用时,我们都必须更新构建过程
  • 您可以在 NuGet 配置设置中修改 Repository Path 以将 NuGet 包安装在指定文件夹中,而不是默认的“$(Solutiondir)\Packages”文件夹中。检查:docs.nuget.org/consume/nuget-config-file
猜你喜欢
  • 2011-03-17
  • 1970-01-01
  • 2011-03-23
  • 2014-08-29
  • 2020-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-14
相关资源
最近更新 更多