C#Library项目正在多个项目中使用

时间:2015-07-02 14:57:34

标签: c# nuget csproj

我有一个在多个应用程序中使用的库项目。我们称之为Library1。 Library1有自己的NuGet包依赖项。当我使用Library1设置项目ProjectA时,它为Library1所依赖的每个.dll指定了一个HintPath。让我们说这个HintPath是“.. \ etc.dll”。

我现在拥有依赖于Library1的Library2和依赖于Library2(和Library1)的ProjectB。我有这样的层次结构:

ProjectB
--Library2
----Library1

但另一个项目直接使用Library1,如下所示:

ProjectA
--Library1

当打开ProjectB时,包正在“ProjectB \ packages”中解析,这是根据它来自库的两个文件夹,这意味着它应该在“.... \ etc.dll”中查找而不是在HintPath中指定“.. \ etc.dll”。

有没有办法可以根据父项目指定HintPath,或者任何类型的解决方法可以让我无需手动更改每个.dll引用路径就可以使用它?也许我可以添加到父项目的文件?

1 个答案:

答案 0 :(得分:1)

您可以创建一个NuGet.Config文件,可以指定repositoryPath,它允许您覆盖为项目下载NuGet包的默认位置。

<configuration>
  <config>
    <add key="repositorypath" value="Packages" />
  </config>
</configuration>

repositoryPath是相对于NuGet.Config文件的目录。

NuGet将根据您打开的解决方案查找此文件,因此您需要将其放置,以便您的一个或所有解决方案都使用此文件。一种简单的方法是将它放在一个目录中,该目录是两个解决方案的父目录,但您可以为每个解决方案或仅为一个解决方案添加它。

如果解决方案位于c:\ a \ b \ c,那么NuGet将按照指定的顺序在这些位置查找文件,最后回到用户配置文件中的文件。

  1. C:\ A \ B \ c.nuget \ nuget.config
  2. C:\ A \ B \ C \ nuget.config
  3. C:\ A \ B \ nuget.config
  4. C:\一个\ nuget.config
  5. C:\ nuget.config
  6. 设置完成后,您可能需要重新安装NuGet包,以便将正确的hintPath添加到您的项目中。