如何正确配置与DevOps(TFS)协作的NuGet软件包

如何正确配置与DevOps(TFS)协作的NuGet软件包,tfs,azure-devops,nuget-package,nuget-package-restore,collaboration,Tfs,Azure Devops,Nuget Package,Nuget Package Restore,Collaboration,我已阅读并仔细阅读了以下内容: 但是我仍然对包含我的解决方案包的文件夹包有问题,当我签入代码时,对于我来说一切都正常,当其他人获得签入解决方案时,他必须更改在ProjectNameFile.csproj中设置的路径,因为那里的路径包含 ../../../NuGetPackages/../ 但应为(且仅在更改为时有效) ../Packages 但是当这个人登记后,我得到这个版本,我的包文件夹就不见了。。。我们已经在其他项目中使用TFS,但这对我来说是第一次 我尝试了所有我发布的链接,

我已阅读并仔细阅读了以下内容:

但是我仍然对包含我的解决方案包的文件夹包有问题,当我签入代码时,对于我来说一切都正常,当其他人获得签入解决方案时,他必须更改在ProjectNameFile.csproj中设置的路径,因为那里的路径包含

../../../NuGetPackages/../

但应为(且仅在更改为时有效)

../Packages

但是当这个人登记后,我得到这个版本,我的包文件夹就不见了。。。我们已经在其他项目中使用TFS,但这对我来说是第一次

我尝试了所有我发布的链接,但没有运气。 工具>选项>NuGet软件包管理器如下所示:

我有一个与projectname.sln文件级别相同的NuGet.Config文件,该文件包含以下内容:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <!-- I tried each line below seperately and together -->
    <add key="globalPackagesFolder" value=".\packages" /> 
    <add key="repositoryPath" value="C:\Development\projectname\Packages" />
  </config>
</configuration>

因此,我现在所做的是在projectname.sln级别创建了一个Packages文件夹,当我构建解决方案时,这是可行的,但嘿,我不能每次都这样做,我确信有一种方法可以实现这一点,但不知道如何实现

提前感谢您的反馈

如何正确配置与DevOps(TFS)协作的NuGet软件包

我假设您使用packages.config作为nuget package management,因为您说过“
他必须更改ProjectNameFile.csproj中设置的路径,因为那里的路径包含../../../../../../NuGetPackages/…

因此,如果您使用的是
packages.config
,那么在使用Azure DevOps构建项目时,应该在
nuget.config
文件中使用
repositoryPath
的相对路径

正如我们所知,当我们在Azure DevOps中构建项目时,Azure DevOps总是将项目复制到类似于
D:\a\1\s\xx
的路径,这与您本地的路径不同。和NuGet始终使用
ProjectNameFile.csproj中的相对路径(
。\packages
。/../../../../../NuGetPackages/..
),如:

<Reference Include="packagename, Version=3.0.0.0, xxx">
  <Private>True</Private>
  <HintPath>..\packages\xxx\lib\net45\xxx.dll</HintPath>
</Reference>
通过此设置,packages文件夹的路径基于文件
nuget.config
。只要您没有修改
nuget.config
文件的位置,就不需要修改
HintPath

注:

  • globalPackagesFolder
    用于另一种nuget管理类型
    packagereference

  • 如果您正在与其他人合作开发项目,则需要统一nuget包的位置,而不是不断手动修改
    HintPath
    。否则,它将在您的开发中造成混乱


  • 希望这能有所帮助。

    感谢您如此详细的解释,这对我来说是有意义的,在内部(在我们公司),我们确实在项目合作时将我们的项目映射到相同的位置,在这种情况下(如上所述),我们没有,所以可能这就是原因。我将对此进行验证并尝试,这将在下周进行,并在此处提供反馈。无论如何,再次感谢您提供的信息。是的,我们正在使用packages.config,我忘了回答:)@Dimitri,没关系,正在等您。我在其他设备上尝试了不做任何更改(在解决方案级别上重新创建packages文件夹后),并进行了一些“签入”和“获取最新信息”在我这方面,似乎没有什么问题了。我将在未来几天内知道我的同事是否也是这样。将在这里报告,但无论如何,感谢您提供的详细信息,这帮助我更好地了解NuGet:)好的,在另一边没有出现问题,所以我在这里有点困惑,为什么它们不再发生,只是创建了一个Packages文件夹,而它本来就在那里,但不知怎的被删除了。。。搞笑:)无论如何,我想再次感谢你,利奥!
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <config>
        <add key="repositoryPath" value=".\packages" />
      </config>
    </configuration>