【问题标题】:Stop Nuget from adding the relative path to the .csproj file阻止 Nuget 将相对路径添加到 .csproj 文件
【发布时间】:2021-01-02 13:04:13
【问题描述】:

我已遵循此处关于堆栈溢出的几篇关于创建/修改“nuget.config”文件(解决方案旁边)的建议。尝试为我的“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 部分。它只是预先添加了相对路径,这会破坏它!有什么方法可以阻止添加 ..\..\..\ 部分?我不想要任何相对路径。

我们将不胜感激。

提前致谢

【问题讨论】:

  • 我经常在记事本中打开csproj并编辑路径。
  • 是的,但这对我来说不是一个可行的长期解决方案。我一直在做同样的事情,我试图让它默认到正确的位置,这样我就不必再这样做了。
  • 那你需要向微软投诉

标签: c# visual-studio nuget


【解决方案1】:

有什么方法可以阻止 ......\ 部分 被添加?我不想要任何相对路径。

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

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。团队会仔细考虑您的想法。完成后,您可以在此处分享链接,包括我们在内的任何人都会对其进行投票,以便获得 Microsoft 的更多关注。

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

在此之前,请备份您的项目。

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      • 1970-01-01
      相关资源
      最近更新 更多