Visual Studio 2017 / ASP.NET Web应用程序解决方案。
默认文件夹结构如下:
我想要实现的是将所有内容(包括软件包)保留在https://<org_id>.internetofthings.ibmcloud.com/api/v0002/device/types/<devicetype>/devices/<deviceid>/events/<eventid>
文件夹(WebApplication1.sln文件除外)之内。
我了解NuGet.Config,但是不幸的是,似乎必须将此文件放置在.sln文件旁边。我希望将此文件放在WebApplication1
文件夹中。我想在解决方案文件夹之外有一个只有一个文件:WebApplication1
文件。
答案 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
文件:
注意:此方法有其自身的局限性,我们必须在nuget.config
文件中使用绝对路径,并且该设置对于其他解决方案仍然适用。
此外,您可以尝试在项目文件中使用PackageReference
而不是packages.config
。使用PackageReference
,您的软件包将指向全局软件包文件夹C:\Users\<UserName>\.nuget\packages
,因此我们无需添加nuget.config文件即可更改软件包文件夹。
要使用PackageReference,请转到“工具”->“ NuGet PackageManager”->“软件包管理设置”:
希望这会有所帮助。
答案 1 :(得分:1)
我对Visual Studio为什么将package文件夹放在.sln
旁边但在WebApplication1
文件夹之外的理解是,WebApplication1
是WebApplication1
解决方案中的一个项目。但是一个解决方案可以包含多个项目。在您的情况下,项目名称恰好与解决方案名称相同(由于在vs中创建此项目和解决方案时)。因此,如果您在此解决方案中有多个项目,但想共享一些nuget包,则package
文件夹位于项目文件夹之外是很有意义的。
我想了解为什么vs具有此默认设置。希望有帮助。