构建服务器未在内部存储库中找到包

Build Server Not finding packages on internal repository

我正在尝试设置一个由 TFS Build 2013 构建的解决方案。该解决方案使用来自 nuget.org 和公司内部存储库的 NuGet 包。在构建服务器上构建时,它会从 nuget.org 中找到包,但不会从我的内部存储库中找到包。我在解决方案中有一个 NuGet.Config 文件(在 .nuget 文件夹下),如下所示:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
  <packageSources>
    <add key="NuGet official package source" value="https://nuget.org/api/v2/" />
    <add key="My Internal Package Source value="\myserver\NuGetPackages" />
  </packageSources>
  <activePackageSource>
    <add key="All" value="(Aggregate source)"  />
  </activePackageSource>
</configuration>

我收到的错误消息是:

Unable to find version '1.0.0' of package 'MyPackageName'.

我需要做什么才能让它从我的内部存储库中获取包?

我找到了问题的答案。我 discovered 你可以在 %ProgramData%\NuGet 和 nuget.exe 中放置一个名为 NuGetDefault.config 的文件会捡起它。所以我创建了这个文件并将我的两个源放在其中。 (这可能不适用于希望不同项目使用不同来源的人。)

使用 Process Monitor,我发现 nuget.exe 在尝试以“\\myserver\NuGetPackages”格式访问我的本地存储库时出现找不到路径错误。对我来说幸运的是,我的内部 nuget 服务器也是安装了 TFS Build 的服务器。所以我只是将我的路径更改为 "D:\folder\nugetfolder" 之类的东西。

我是 运行 网络服务帐户下的构建,因此我必须授予该帐户访问该目录的权限。 (现在我想起来了,这可能也是我无法通过“\\myserver\NuGetPackages”格式访问存储库的原因)。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="NuGet official package source" value="https://nuget.org/api/v2/" />
    <add key="PD Package Source" value="D:\NuGetPackages" />
  </packageSources>
  <activePackageSource>
    <add key="All" value="(Aggregate source)" />
  </activePackageSource>
</configuration>