将 $(SolutionDir)\packages\ 放在 .csproj 文件中而不是 ..\packages\

put $(SolutionDir)\packages\ in .csproj file instead of ..\packages\

我有一个解决方案,其中包含一些在多个其他项目中使用的 class 库。当我从 VS 执行 Install-Package 时,它将采用 $(SolutionDir)\packages\ 并将其转换为相对路径,例如 ..\packages\。然后将其保存到 .csproj 文件中。

我的问题是这些 .csproj 文件用于具有不同文件层次结构的不同位置,这意味着 ..\packages\ 在某些其他解决方案中不会指向 $(SolutionDir)\packages\。所以问题是,如何让它将 $(SolutionDir)\packages\ 写入 .csproj 文件而不是 ..\packages\

您无法让 NuGet 将 $(SolutionDir)\packages 写入项目文件。您需要修改其源代码。

NuGet 提供了一种方法,通过在 NuGet.Config file.

中定义此目录,多个解决方案可以共享一个公共包目录
<configuration>
  <config>
    <add key="repositoryPath" value="SomeDirectory\Packages" />
  </config>
</configuration>

您可以将此 NuGet.config 文件放在解决方案的公共父目录中,然后 NuGet 会找到它并将其用于解决方案。

可以使用的一件事是将所有解决方案保持在一个级别。这样所有 solutions/projects.

的包文件夹将处于同一级别