阻止 Nuget 将相对路径添加到 .csproj 文件

Stop Nuget from adding the relative path to the .csproj file

我遵循了此处关于堆栈溢出的几个帖子的建议,这些帖子涉及“nuget.config”文件的 creation/modification(在解决方案旁边)。尝试为我的“Packages”文件夹设置默认位置时,它似乎对我来说是半工作。

请参阅下面的“nuget.config”文件。

<?xml version="1.0" encoding="utf-8"?>
<configuration>

   <config>
     <add key="repositoryPath" value="$(SolutionDir)\packages" />
   </config>

</configuration>

这就是新添加 nuget 包时最终放入 .csproj 文件的内容...

<HintPath>..\..\..$(SolutionDir)\packages\SomeNugetPackage.1.1.1.0\lib\SomeNugetPackage.dll</HintPath>

似乎正在使用 'nuget.config',因为它注入了我的 $(SolutionDir)\packages 部分。它只是预先添加了相对路径,这打破了它!有什么方法可以阻止添加其中的 ..\..\..\ 部分吗?我不想要任何相对路径。

如有任何建议,我们将不胜感激。

提前致谢

Is there any way that I can stop the ......\ portion of that from being added? I do not want any relative pathing in place.

恐怕你目前还得不到你想要的

hintpath会通过nuget机制默认始终使用相对路径。很抱歉,这是一个 nuget 机制,我们无法修改该 nuget 机制。

无论你如何设置repositoryPath的值,即使是绝对路径地址如c:\test\packages,它也定位到该值repositoryPath根据当前xxx.csproj地址,然后在安装nuget包时,将相对路径分配给每个nuget包的hintpath

所以在目前的情况下,hintpath不能使用绝对路径。

另外$(SolutionDir)是由csproj文件识别的,而不是nuget.config,所以会失效。

此外,如果你还想要这个,我想你应该suggest a feature on our DC Forum。团队会仔细考虑您的想法。完成后,您可以在这里分享 link,包括我们在内的任何人都会对其进行投票,这样它会得到 Microsoft.

的更多关注

所有这些都将帮助您尽快获得想要的结果。

在执行此操作之前,请备份您的项目。

作为建议,您可以使用 PackageReference Nuget manage format。默认情况下,它将直接从全局缓存中引用包(c:\users\current user.nuget\packages)。而且它不会涉及任何相对路径,您不必担心提示路径。

只需右键单击 packages.config 文件-->单击 migrate packages.config to packagesreference

并且如果不符合您的要求,您可以忽略。

我的解决办法是把源代码放在另一个驱动器下;例如我将源代码放在D:盘下,packages文件夹放在C:盘下。