【问题标题】:TFS 2013 Build machine cannot see on-premises Nuget FeedTFS 2013 Build 机器看不到本地 Nuget Feed
【发布时间】:2015-01-23 17:46:46
【问题描述】:

我已经阅读了大约一百个在线链接以试图找到答案,但我完全没有解释。

我有一个运行 Git 团队项目的 TFS 2013 服务器。我创建了一个 TFS 构建来构建一个服务,该服务使用公共(实体框架)nuget 包以及我们自己的几个库,这些库在 IIS 服务器上打包为 Nuget 包。我使用的是自动包还原,而不是“已弃用”的 MSBuild“启用包还原”。因此 .nuget 文件夹中唯一的 nuget 文件是 nuget.config (我也尝试将其移至根文件夹)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
  <packageSources>
     <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
     <add key="myserver" value="http://myserver/Nuget/Nuget/" />
  </packageSources>
  <packageRestore>
     <add key="enabled" value="True" />
  </packageRestore>
</configuration>

问题是,当我远程进入构建框并从命令行尝试此操作时:

nuget.exe list -source http://myserver/nuget/nuget

它确实列出了所有的包。

但是 TFS 构建,确实从 nuget.org 下拉实体框架......但随后它尝试构建:

C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Common.CurrentVersion.targets
(1697,5): warning MSB3245: Could not resolve this reference. 
Could not locate the assembly "MyEntitiesLib". 
Check to make sure the assembly exists on disk. 
If this reference is required by your code, you may get compilation errors.

所以,我的智慧到此为止。项目的 nuget.config 和 msbuild 工具文件夹中的默认 nuget.config 都有我的源代码,我可以从命令行列出它,但自动包还原不会拉下该包,并在编译时炸毁。

帮助任何人?

【问题讨论】:

  • 会不会是安全问题?构建服务器可能在另一个帐户上运行,然后您从哪里尝试过 nuget 命令行?
  • 你知道,我想过这个。但是本地的 IIS Nuget 站点设置为允许匿名。根本没有安全保障。因此,我不希望 TFS 服务器运行的 NT Active Directory 帐户在获取它时遇到任何问题。也没有涉及防火墙。一切都在现场。如果您知道如何轻松检查我是否有兴趣听到它?我希望日志更详细,并指出 TFS Build TRIED 对 Nuget 的具体操作。
  • 您的构建帐户是否设置为网络服务?这可能会带来一些问题,但这只是一个疯狂的猜测。我不得不承认我不知道如何验证权限:(
  • 您是否尝试将 activePackageSource 元素添加到您的配置中?我会在你的 packagerestore 元素中将自动设置为 true
  • “应用程序层摘要”服务帐户确实是网络服务。将其更改为我远程使用的同一个帐户,该帐户可以访问很多东西……这似乎没有帮助。我不知道我是否需要更改其他任何内容。您如何判断构建代理以谁的身份运行?也许就是这样?你能给我一个 activePackageSource 元素的例子和你描述它的方式吗?谢谢!

标签: git tfs msbuild nuget tfsbuild


【解决方案1】:

答案是在最不可能的地方找到的。

Nuget fails to install specific version

我已经构建了符号版本与非符号版本并排的软件包,而 nuget restore 显然放弃了它们。当我尝试从构建框中手动运行 Nuget.exe Restore 时,提示是关于重复根节点的警告。我可以列出这些包,但我无法恢复它们。从 Nuget 存储库中删除 *.symbol.nupkg 文件后,程序包已恢复并且构建工作正常。

谢谢大家。我希望这对其他人有所帮助。

【讨论】:

    猜你喜欢
    • 2017-12-09
    • 2015-04-26
    • 2018-12-11
    • 2018-07-01
    • 2015-08-28
    • 1970-01-01
    • 2015-12-02
    • 2015-09-23
    • 1970-01-01
    相关资源
    最近更新 更多