我已阅读并完成以下内容:
但我仍然有文件夹包含我的解决方案的包的问题,当我检查我的代码,因为我在我身边一切正常,当其他人获得检查的解决方案,他必须改变路径是在ProjectNameFile.csproj中设置,因为其中包含的路径
../../../../nu get packages/....
但应该是(只有在改为时才有效)
../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文件夹,当我构建我的解决方案时,这可以工作但是,我不能每个(X)时间都这样做,我相信有一种方法可以实现这但不知道怎么做。
提前感谢您的任何反馈。
如何正确配置NuGet包以与DevOps(TFS)协作
我想你正在使用packages.config作为nuget包管理,因为你说“he has to change the path that is set in the ProjectNameFile.csproj because the path there contains ../../../../NuGetPackages/....
”。
因此,如果您使用packages.config
,则在使用Azure DevOps构建项目时,应在repositoryPath
文件中使用nuget.config
的相对路径。
我们知道,当我们在Azure DevOps中构建项目时,Azure DevOps总是将项目复制到D:\a\1\s\xx
这样的路径,这与本地路径不同。 NuGet总是使用..\packages
中的相对路径(../../../../NuGetPackages/...
或ProjectNameFile.csproj
):
<Reference Include="packagename, Version=3.0.0.0, xxx">
<Private>True</Private>
<HintPath>..\packages\xxx\lib\net45\xxx.dll</HintPath>
</Reference>
在这种情况下,当我们构建项目时,nuget仍然会将nuget包恢复到绝对路径C:\Development\projectname\Packages
,但由于项目的位置已更改为D:\a\1\s\xx
,因此.csproj文件中HintPath
的相对路径也应该是相应地改变了,否则nuget找不到相应的dll文件。
因此,我们应该将repositoryPath
设置为nuget.config
文件中的相对路径,例如:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value=".\packages" />
</config>
</configuration>
使用此设置,packages文件夹的路径基于文件nuget.config
。只要您没有修改nuget.config
文件的位置,就不需要修改HintPath
。
注意:
globalPackagesFolder
。否则会导致开发混乱。希望这可以帮助。