在传统的.Net项目中,如果我添加了一个NuGet包引用,它会被下载到一个“packages”文件夹中,然后我可以将其与我的代码一起检入源代码控制。这允许任何开发人员下载代码以及NuGet包,而无需设置单独的包源来下载包。但是,在.Net Core项目中,情况并非如此。该解决方案中似乎没有“packages”文件夹,每个开发人员需要设置自定义的包源并在获取代码时下载包。是否有一种方法可以配置.Net Core项目,使其像传统的.Net项目一样管理“packages”文件夹呢?
在传统的.Net项目中,如果我添加了一个NuGet包引用,它会被下载到一个“packages”文件夹中,然后我可以将其与我的代码一起检入源代码控制。这允许任何开发人员下载代码以及NuGet包,而无需设置单独的包源来下载包。但是,在.Net Core项目中,情况并非如此。该解决方案中似乎没有“packages”文件夹,每个开发人员需要设置自定义的包源并在获取代码时下载包。是否有一种方法可以配置.Net Core项目,使其像传统的.Net项目一样管理“packages”文件夹呢?
许多NuGet行为可以通过NuGet.Config
文件进行控制(有关更多详细信息,请参见此参考资料)。
如果您在解决方案旁边放置一个NuGet.Config
文件,并具有以下内容,则可以覆盖软件包将被还原到的位置:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="globalPackagesFolder" value=".\packages" />
</config>
</configuration>
如果问题是你需要在每台机器上设置额外的源,那么你也可以通过在代码库中添加NuGet.Config来添加这些源,这样当打开解决方案时,VS将会选择要使用的馈线:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="CompanyFeed" value="https://my.company.com/private/nuget" />
</packageSources>
</configuration>
如果您没有要托管软件包的源,并且需要将软件包与解决方案一起包含,那么您可以在NuGet.Config中使用包含.nupkg
文件的目录:<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="local" value=".\NuGetPackages" />
</packageSources>
</configuration>
PackageReference
XML元素。Visual Studio包管理器仍然可用。 - Dustin Kingen