我如何使用\\公司\网络\共享\“;作为TeamCity的NuGet来源?

我如何使用\\公司\网络\共享\“;作为TeamCity的NuGet来源?,nuget,teamcity,Nuget,Teamcity,我已检查TeamCity用户是否有权访问相关的网络共享 可以正确找到公共NuGet提要中的所有包,但无法找到网络共享上可用的包 当通过VisualStudio以完全相同的路径构建时,我们使用网络共享,没有问题 我试过使用“file://ratchet/NuGetRepository“但这没什么区别 TeamCity日志条目和构建步骤配置的屏幕截图如下所示: NuGet command: E:\BuildAgent01\plugins\nuget-agent\bin\JetBrains.TeamC

我已检查TeamCity用户是否有权访问相关的网络共享

可以正确找到公共NuGet提要中的所有包,但无法找到网络共享上可用的包

当通过VisualStudio以完全相同的路径构建时,我们使用网络共享,没有问题

我试过使用“file://ratchet/NuGetRepository“但这没什么区别

TeamCity日志条目和构建步骤配置的屏幕截图如下所示:

NuGet command: E:\BuildAgent01\plugins\nuget-agent\bin\JetBrains.TeamCity.NuGetRunner.exe E:\BuildAgent01\tools\NuGet.CommandLine.DEFAULT.nupkg\tools\NuGet.exe restore E:\BuildAgent01\work\95323b7041b60513\MySolution.sln -Source https://nuget.org/api/v2/ -Source \\ratchet\NuGetRepository\

您可以将包源包含在NuGet.targets文件中。只需找到注释行并添加路径

<PackageSource Include="https://nuget.org/api/v2/" />
<PackageSource Include="\\ratchet\NuGetRepository\" />


可以通过指定网络共享的完全限定名称来解决此问题,例如
\\ratchet.hq.local\NuGetRepository
由于接受的答案没有为我的设置提供解决方案,我想发布允许TeamCity访问我的网络共享的内容

首先,一个非常重要的注意事项:TeamCity构建代理可以作为Windows服务运行,也可以直接在命令提示符下运行。对于我的机器,这会产生以下后果:

  • 作为Windows服务运行时,生成代理以
    LocalSystem
    的身份登录。对于我们的网络共享,未授予我的计算机的凭据权限。

    注意:虽然表示可以将网络共享配置为允许计算机的
    LocalSystem
    帐户拥有权限,但这不是我的选项
  • 在命令提示符下运行时,生成代理将使用运行它的人的安全上下文(对我来说,它是我的域用户)。同样,对于我们的网络共享,所有域用户都被授予权限
  • 快速的解决方案是在命令提示符下运行构建代理,并在一天内调用它;但是,我确实希望将构建代理作为Windows服务运行,因为我认为这是一种更干净的方法

    以下是我的解决方案: 首先,我需要授予我的域用户作为服务登录的特权。这是使用我的域用户的安全上下文运行服务所必需的。我导航到本地安全策略中的用户权限分配:

    控制面板->管理工具->本地安全策略->本地策略->用户权限分配

    接下来,我将我的域用户添加到作为服务登录设置中。为此,我确保使用我的用户名包含该域

    现在可以在启动服务时使用我的域用户的安全上下文,我导航到服务(Services.msc),找到TeamCity Build Agent,并编辑其属性:

    现在,当重新启动TeamCity Build Agent Windows服务时,它将能够访问网络共享,因为它使用的是我的域用户的安全上下文。现在,我可以访问共享驱动器上的Nuget存储库,并保持构建代理在后台运行