将包文件夹移到解决方案文件夹中

时间:2019-02-03 19:02:23

标签: visual-studio nuget nuget-package

Visual Studio 2017 / ASP.NET Web应用程序解决方案。

默认文件夹结构如下:

enter image description here

我想要实现的是将所有内容(包括软件包)保留在https://<org_id>.internetofthings.ibmcloud.com/api/v0002/device/types/<devicetype>/devices/<deviceid>/events/<eventid>文件夹(WebApplication1.sln文件除外)之内。

我了解NuGet.Config,但是不幸的是,似乎必须将此文件放置在.sln文件旁边。我希望将此文件放在WebApplication1文件夹中。我想在解决方案文件夹之外有一个只有一个文件:WebApplication1文件。

2 个答案:

答案 0 :(得分:1)

  

我了解 NuGet.Config,但不幸的是,似乎必须将此文件放置在.sln文件旁边。我本来希望将此文件放在WebApplication1文件夹内。我想在解决方案文件夹之外只有个文件:WebApplication1.sln文件。

我了解您的要求,您只希望在解决方案文件夹之外只有WebApplication1.sln个文件。但是,如果您使用nuget.config来更改软件包的位置,则此nuget.config文件将放置在解决方案文件夹之外的文件夹中,这不是您想要的。

要解决此问题,您可以将此nuget.config文件放在解决方案文件夹之外,而不必将此文件放在.sln文件旁边,例如,可以将该文件放在C驱动器的根目录,其内容如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="repositoryPath" value="C:\Users\<UserName>\source\repos\WebApplication1\WebApplication1\packages" />
  </config>
</configuration>

然后关闭您的Visual Studio并删除解决方案文件夹中的packages文件夹,重新打开Visual Studio并打开您的解决方案,右键单击您的解决方案,选择还原nuget软件包,所有nuget软件包将被放置解决方案文件夹中的文件,解决方案文件夹之外的唯一文件是WebApplication1.sln文件:

enter image description here

注意:此方法有其自身的局限性,我们必须在nuget.config文件中使用绝对路径,并且该设置对于其他解决方案仍然适用。

此外,您可以尝试在项目文件中使用PackageReference而不是packages.config。使用PackageReference,您的软件包将指向全局软件包文件夹C:\Users\<UserName>\.nuget\packages,因此我们无需添加nuget.config文件即可更改软件包文件夹。

要使用PackageReference,请转到“工具”->“ NuGet PackageManager”->“软件包管理设置”:

enter image description here

希望这会有所帮助。

答案 1 :(得分:1)

我对Visual Studio为什么将package文件夹放在.sln旁边但在WebApplication1文件夹之外的理解是,WebApplication1WebApplication1解决方案中的一个项目。但是一个解决方案可以包含多个项目。在您的情况下,项目名称恰好与解决方案名称相同(由于在vs中创建此项目和解决方案时)。因此,如果您在此解决方案中有多个项目,但想共享一些nuget包,则package文件夹位于项目文件夹之外是很有意义的。

我想了解为什么vs具有此默认设置。希望有帮助。