Nuget软件包安装在项目解决方案之外

时间:2019-06-13 12:54:57

标签: visual-studio nuget

假设我有一个名为MyFirstSolution的解决方案,并且内部有一个名为MyFirstProject的项目。在该项目中,我正在安装nuget包,例如Dapper,EntityFramework等...

应该如何工作: 应该将packages文件夹创建到MyFirstSolution文件夹中,并在内部下载并安装项目中引用的所有nuget软件包。

我遇到的问题是未创建packages文件夹,并且将nuget包下载到MyFirstSolution文件夹上方一层到名为XYZHelper的文件夹中。

当我从某些存储库中下载解决方案时,nuget软件包会还原到同一文件夹中,而不是还原到解决方案本身,并且csproj文件中的引用说它们应该位于solutionFolder \ packages中,因此不会构建我的所有项目。 / p>

如果我手动将软件包复制到应有的文件夹中,那很好,但是在每次构建后都将副本复制到该XYZHelper文件夹中。

我没有任何后构建事件或类似的东西配置到项目中。我想视觉工作室就是这样,但是我不知道是什么。

2 个答案:

答案 0 :(得分:0)

可以使用nuget.config(设置名称称为repositoryPath)更改解决方案软件包文件夹。因此,请检查可能设置此值的nuget.config个文件。通过从nuget.org/downloads下载nuget.config并运行nuget.exe,可以获取还原使用的nuget restore MyFirstSolution.sln文件的确切列表。在输出末尾附近,它将列出每个已读取的nuget.config文件。

当没有配置文件更改解决方案软件包文件夹(存储库路径)时,它始终默认为与packages文件位于同一目录中的名为.sln的子目录。我知道为packages.config项目更改此位置的唯一方法是使用nuget.config文件,因此我相信您应该能够找到正确的配置文件来解决它。

答案 1 :(得分:0)

  

应如何工作:应将packages文件夹创建到   MyFirstSolution文件夹及其内部应下载并安装   项目中引用的所有nuget软件包。

您好Stdfan,不确定您的VS版本。但是对于VS2015和更早版本,nuget软件包由packages.config文件控制。事情应该像您提到的那样进行。

但是对于VS2017和VS2019,它们有两种方法来管理nuget:Packages.config和PackageReference。对于PackageReference格式,程序包存储在C:\Users\xxx\.nuget\packages中。因此,如果您的vs版本是VS2017或VS2019,则可以尝试将格式更改为PackageReference来解决此问题。

  

我遇到的问题是未创建packages文件夹并且   nuget软件包在MyFirstSolution的上一级下载   文件夹放入名为XYZHelper的文件夹。

方向1:

像zivkan建议的那样,我也认为某些因素会影响还原过程。对于Packages.config格式,正常情况下,文件夹将存储在packages文件夹中。但是根据 this document,我们可以自定义nuget.config文件以控制nuget行为。因此,请检查locations where nuget.config exists,可能会导致计算机的nuget.config发生某些更改,或者导致用户的nuget.config中进行某些设置,从而导致此问题。(除非我们创建了该用户的nuget.config,否则它将不存在。在那里)

方向2:

  

当我从某些存储库下载解决方案时,   恢复到同一文件夹

由于还原过程在构建输出中不可见,因此nuget还原可能工作良好,但是构建过程中的某些操作将程序包文件夹的内容移至XYZhelper。

选中customize your build。请检查Directory.build.xx文件的目录结构,如果该文件存在于结构的任何文件夹中,则它可能会影响您的构建过程:C:\xxx\lancel\source\repos\

  

我没有任何构建后事件或类似配置的事件   项目。我想视觉工作室就是这样,但是我   无法弄清楚什么。

这与VS正常设置无关。我认为某些自定义文件会导致此问题(无论是nuget.config还是directory.build.xxx),请检查是否已安装任何第三方软件或vs扩展程序。尝试关闭vs,删除.vs,bin和obj文件夹,然后以safe mode的身份运行vs。