我有一个需要Nuget包的代码库。我还有一个需要引用相同Nuget包的应用程序。
如果我单独打开任一项目并使用Nuget Pacakge管理器将Nuget包添加到Visual Studio中的项目,则将其添加到[PackageName] \ Packages。这就是我所期望的。
但是,如果我同时在Visual Studio中打开这两个项目,VS会立即假设我想要一个"解决方案"这很好,它基本上是VS的组织事情,但现在添加包的方式更改第一个包仍然添加到[ProjectName] \ Packages但是当我从第二个项目引用它时,我得到一个参考路径。 [FirstProjectName] \包。
如果我偶然然后将Nuget包添加到第二个项目中,然后几分钟或几个月后将相同的Nuget包添加到第一个项目中,我现在反过来得到相同的参考混乱。快进几个月,项目结构相互依赖是参考网址的蜘蛛网。具有特定的文件结构依赖性。移动一个项目,删除它或者只是没有获得本地副本,因为你没有使用它,整个过程就是BOOM!
如果我打开1个项目或打开2,我如何禁用此功能并使添加包的功能相同。在这两种情况下,我都希望包安装在[ProjectName] \ Packages中,而不是第一次安装和引用第二。
注意:添加"广泛的解决方案"常见的nuget包目录正是我不想要的。每个项目都需要独立。能够编译和运行,而不依赖于项目目录之外的结构和项目显式引用的功能依赖项,用于开发。
答案 0 :(得分:0)
使用Visual Studio工具时,NuGet不支持具有项目特定的包目录。
NuGet的packages目录由在Visual Studio中打开项目的当前解决方案定义。
packages目录可以隐式地是$(SolutionDir)\ packages目录,也可以是根据当前解决方案的目录找到的NuGet.Config文件定义的自定义路径。通过查看几个目录找到NuGet.Config文件,但它仍然由当前解决方案的位置驱动。
使用NuGet 3并引入project.json文件,您现在可以在没有将它们添加到项目文件的情况下获得引用,因此您不会遇到程序集的相对路径问题。但是并非所有项目都支持新的project.json。此外,您使用的是不支持NuGet 3的Visual Studio 2013。
所以你唯一的解决方法是:
答案 1 :(得分:0)
我能够通过设置不同于我的项目的驱动器的存储库路径,或者将存储库路径设置为UNC路径来解决此问题。
我是通过编辑Nuget.Config文件(通常在%APPDATA%\ NuGet \ NuGet.Config中找到)并添加Repository Path设置来完成的。
请注意,我将D驱动器用于与代码相关的文件。
<config>
<add key="repositorypath" value="\\localhost\d$\NuGet\packages" />
</config>