我有一个在多个应用程序中使用的库项目。我们称之为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引用路径就可以使用它?也许我可以添加到父项目的文件?
答案 0 :(得分:1)
您可以创建一个NuGet.Config文件,可以指定repositoryPath,它允许您覆盖为项目下载NuGet包的默认位置。
<configuration>
<config>
<add key="repositorypath" value="Packages" />
</config>
</configuration>
repositoryPath是相对于NuGet.Config文件的目录。
NuGet将根据您打开的解决方案查找此文件,因此您需要将其放置,以便您的一个或所有解决方案都使用此文件。一种简单的方法是将它放在一个目录中,该目录是两个解决方案的父目录,但您可以为每个解决方案或仅为一个解决方案添加它。
如果解决方案位于c:\ a \ b \ c,那么NuGet将按照指定的顺序在这些位置查找文件,最后回到用户配置文件中的文件。
设置完成后,您可能需要重新安装NuGet包,以便将正确的hintPath添加到您的项目中。