阻止 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:盘下。
我遵循了此处关于堆栈溢出的几个帖子的建议,这些帖子涉及“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:盘下。