将包文件夹移动到解决方案文件夹中
Move packages folder inside the solution folder
Visual Studio 2017 / ASP.NET Web 应用程序解决方案。
默认文件夹结构如下:
我想要实现的是将所有内容(包括包)保存在 WebApplication1
文件夹中(WebApplication1.sln 文件除外)。
我知道 NuGet.Config 但不幸的是,似乎必须将此文件放在 .sln 文件旁边。我更愿意将此文件放在 WebApplication1
文件夹中。我想在解决方案文件夹之外有 只有一个 文件:WebApplication1.sln
文件。
I know about NuGet.Config but unfortunately it seems mandatory to place this file next to the .sln file. I would have preferred to place this file inside of WebApplication1 folder. I would like to have ONLY ONE file outside of the solution folder: the WebApplication1.sln file.
我了解您的要求,您只想在解决方案文件夹之外放置 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 并删除解决方案文件夹中的包文件夹,重新打开 Visual Studio 并打开你的解决方案,右键单击你的解决方案,select恢复 nuget 包,所有 nuget 包都将放在解决方案文件夹内,解决方案文件夹外的唯一文件是 WebApplication1.sln
文件:
注意:此方法有其自身的局限性,我们必须在 nuget.config
文件中使用绝对路径,此设置对其他解决方案仍然有效。
此外,您可以尝试在项目文件中使用PackageReference
而不是packages.config
。使用 PackageReference
,您的包指向全局包文件夹 C:\Users\<UserName>\.nuget\packages
,因此我们不需要添加 nuget.config 文件来更改包文件夹。
要使用 PackageReference,请转到工具->NuGet PackageManager->包管理设置:
希望这对您有所帮助。
我对 visual studio 将包文件夹放在 .sln
旁边但放在 WebApplication1
文件夹之外的原因的理解是,WebApplication1
是 [=11= 中的一个项目] 解决方案。但是一个解决方案可以包含多个项目。在您的情况下,项目名称恰好与解决方案名称相同(由于您在 vs 中创建此项目和解决方案时)。因此,如果您在此解决方案中有多个项目,但想共享一些 nuget 包,那么将 package
文件夹放在项目文件夹之外是有意义的。
这就是我对为什么 vs 具有此默认设置的理解。希望对您有所帮助。
Visual Studio 2017 / ASP.NET Web 应用程序解决方案。
默认文件夹结构如下:
我想要实现的是将所有内容(包括包)保存在 WebApplication1
文件夹中(WebApplication1.sln 文件除外)。
我知道 NuGet.Config 但不幸的是,似乎必须将此文件放在 .sln 文件旁边。我更愿意将此文件放在 WebApplication1
文件夹中。我想在解决方案文件夹之外有 只有一个 文件:WebApplication1.sln
文件。
I know about NuGet.Config but unfortunately it seems mandatory to place this file next to the .sln file. I would have preferred to place this file inside of WebApplication1 folder. I would like to have ONLY ONE file outside of the solution folder: the WebApplication1.sln file.
我了解您的要求,您只想在解决方案文件夹之外放置 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 并删除解决方案文件夹中的包文件夹,重新打开 Visual Studio 并打开你的解决方案,右键单击你的解决方案,select恢复 nuget 包,所有 nuget 包都将放在解决方案文件夹内,解决方案文件夹外的唯一文件是 WebApplication1.sln
文件:
注意:此方法有其自身的局限性,我们必须在 nuget.config
文件中使用绝对路径,此设置对其他解决方案仍然有效。
此外,您可以尝试在项目文件中使用PackageReference
而不是packages.config
。使用 PackageReference
,您的包指向全局包文件夹 C:\Users\<UserName>\.nuget\packages
,因此我们不需要添加 nuget.config 文件来更改包文件夹。
要使用 PackageReference,请转到工具->NuGet PackageManager->包管理设置:
希望这对您有所帮助。
我对 visual studio 将包文件夹放在 .sln
旁边但放在 WebApplication1
文件夹之外的原因的理解是,WebApplication1
是 [=11= 中的一个项目] 解决方案。但是一个解决方案可以包含多个项目。在您的情况下,项目名称恰好与解决方案名称相同(由于您在 vs 中创建此项目和解决方案时)。因此,如果您在此解决方案中有多个项目,但想共享一些 nuget 包,那么将 package
文件夹放在项目文件夹之外是有意义的。
这就是我对为什么 vs 具有此默认设置的理解。希望对您有所帮助。