最近建立了一个新的TFS 2018(更新3)服务器,并将程序包管理配置为使用上游资源,即NuGet.org。我要做的一件事是将IIS站点设置为通过代理服务运行。完成所有配置后,我将Visual Studio设置为使用TFS作为唯一的包源,并清除了本地缓存。还原NuGet程序包后,我验证了TFS实际上是在缓存它们。
然后我继续测试服务器版本。从TFS和本地缓存中清除了所有NuGet软件包,并尝试进行构建。尝试检索NuGet软件包时,构建失败。如下所示,在本地缓存或TFS中均未找到NuGet软件包,因此尝试从NuGet下载软件包,但由于连接拒绝消息而失败。
nuget命令失败,并显示退出代码(1)和错误(错误代码为 packages.config项目无法找到包的版本“ 1.3.2” “ MSTest.TestFramework”。 C:\ Users \ TfsBuild.nuget \ packages:包 在源代码上找不到“ MSTest.TestFramework.1.3.2” 'C:\ Users \ TfsBuild.nuget \ packages \'。 https://tfs2.somedomain.com/testco/_packaging/be64f838-0b3e-42b4-92cc-bce7c435274a/nuget/v3/index.json: 在源代码上找不到包“ MSTest.TestFramework.1.3.2” 'https://tfs2.somedomain.com/testco/_packaging/be64f838-0b3e-42b4-92cc-bce7c435274a/nuget/v3/index.json'。 https://api.nuget.org/v3/index.json:无法加载服务索引 源https://api.nuget.org/v3/index.json。发生错误 在发送请求时。无法连接到远程服务器 由于目标计算机主动拒绝,因此可以建立连接 它72.21.81.200:443无法找到软件包的版本'1.3.2' 'MSTest.TestAdapter'。 C:\ Users \ TfsBuild.nuget \ packages:包 在源代码上找不到“ MSTest.TestAdapter.1.3.2” 'C:\ Users \ TfsBuild.nuget \ packages \'。 https://tfs2.somedomain.com/testco/_packaging/be64f838-0b3e-42b4-92cc-bce7c435274a/nuget/v3/index.json: 在源代码上找不到包“ MSTest.TestAdapter.1.3.2” 'https://tfs2.somedomain.com/testco/_packaging/be64f838-0b3e-42b4-92cc-bce7c435274a/nuget/v3/index.json'。 https://api.nuget.org/v3/index.json:无法加载服务索引 源https://api.nuget.org/v3/index.json。发生错误 在发送请求时。无法连接到远程服务器 由于目标计算机主动拒绝,因此可以建立连接 它72.21.81.200:443)
我的猜测是,构建服务器会以某种方式绕过代理并尝试直接检索NuGet软件包,但我不知道如何。生成服务器上的软件包源与我在Visual Studio中使用的源完全相同。权限似乎不是问题,因为当软件包在本地存在于软件包管理中时,构建便会成功。
有人知道为什么它可以在Visual Studio中运行但在构建服务器上失败吗?
更新
我知道构建在哪里绕过上游提要。有一个复选框,显示“使用来自NuGet.org的软件包”。当我取消选中此选项时,TFS不再尝试直接转到NuGet.org。但是,我发现了一个新问题。当我将TFS设置为使用代理时,“使用此VSTS / TFS提要中的软件包”将不再列出我的本地提要。如果我删除了代理设置,则现在会列出供稿,但上游源已损坏。
有人知道如何在代理后面配置TFS 2018,以便两个上游包资源都可以与TFS和Visual Studio中的本地包资源一起使用吗?