【发布时间】:2018-02-01 06:20:48
【问题描述】:
我们刚刚从 VS2013&15/TFS2013 过渡到 VS2017/TFS2017(现场 TFS,而不是 VSTS),第一个测试解决方案是基于 dotNet Core 1.1 的解决方案(多项目 Web 服务)。
该解决方案在原始开发人员的机器上构建良好,我从 TFS 中得到了它,它在我的基础上也构建良好。与我们之前的方法保持一致,packages 文件夹的内容与项目一起签入,因为这使得 package 在 build box 上本地可用(没有互联网)。
但是,在构建服务器上构建解决方案是另一回事,因为我收到了多个表单错误...
..\obj\project.assets.json' not found. Run a NuGet package restore to generate this file.
当我运行 TFS 构建定义以及远程到盒子并直接通过盒子本身上的 VS 构建时,我都会遇到错误。
这整个 project.assets.json not found 问题似乎引起了头疼。就我而言,问题是我试图在我们的 TFS 2017 构建服务器上解决它,没有也永远不会访问互联网(因为它是一个服务器!)。
到目前为止,我看到的所有解决方案似乎都建议运行 Nuget Restore 命令,但由于服务器无法访问 nuget,因此无法运行。
这还没有什么花哨的,只是一个简单的 TFS 2017 Build 定义,其中包含 Get sources 和一个 Build solution 步骤。我无法理解如此简单的事情如何变得如此困难。
更改 Nuget 包还原选项没有任何区别。
由于 project.assets.json 文件是在 obj 文件夹中动态生成的,我什至无法将它们签入以重复使用。任何人都可以建议一个解决方法,目前测试项目已经死了。
编辑:使用 VS2015 创建的 4.6.1 Web 项目尝试相同的过程具有类似的未解析引用结果(例如 System.Web),但没有引发相同的错误,可能是由于是较旧的非核心项目。
【问题讨论】:
-
构建代理上的 Nuget 版本的详细版本是什么?您是否尝试恢复本地 Nuget 提要?
-
服务器上的 nuget 是 3.3.0 - 由 VS2017 作为其安装过程的一部分安装,盒子是一个全新的 VM。不尝试使用本地提要,尝试过但似乎没有任何区别。天哪,这太难了。
-
对此感到抱歉,感谢分享信息,没有互联网的环境和作为构建代理实际上并不常见,您可能需要多加注意才能使其正常工作。
-
鉴于我在过去两周阅读的关于 VS2017 缺乏合适的离线安装程序的帖子数量,我请求对环境有所不同。我自己的经验是,我曾经处理过的所有构建服务器都像保管库一样被锁定,专门用于确保完全受控的构建环境。由于安装问题,也许所有其他人还没有解决构建服务器问题(!) - 我们有一张企业票向 MS 开放了将近两周,只是为了处理 VS2017 的安装。不好。
标签: continuous-integration visual-studio-2017