[英]Configuring Nuget.Config to work in both VS2013 and VS2017
下面是我当前在VS2013中运行的nuget.config。
我正在寻找移至VS2017,但我需要对nuget.config文件进行更改。
无论如何,我可以编写我的nuget.config以便它可以在VS2013或VS2017中工作吗?
我问的原因是因为并非所有开发人员都在使用同一版本的Visual Studio,并且当我签入使用nuget所需的更改时,对于那些在VS2013中加载解决方案的人来说,它会中断。
<!-- VS2013 -->
<?xml version="1.0" encoding="utf-8"?>
<settings>
<repositoryPath>..\lib</repositoryPath>
</settings>
<!-- VS2017 -->
<configuration>
<config>
<add key="repositoryPath" value="..\lib" />
</config>
<packageRestore>
<add key="enabled" value="True" />
</packageRestore>
</configuration>
我的建议是将您拥有的nuget版本更新到最新版本,然后在团队中所有视觉工作室中添加一个nuget存储库,以指向同一文件夹位置。
至少需要了解的唯一一件事是,如果使用2013版本的开发人员(团队A)删除了一个程序包,那么使用2017的开发人员(团队B)应该不会有任何问题,因为当Nuget识别出最新版本后,版本号的存储库文件夹,则该文件夹不存在于package文件夹中,因为它会根据package.config识别已安装和未安装的package.config,那么您应该再次获取依赖项,并将其作为对源代码管理工具的新更改提交,此后,第二个项目将指向正确的引用,并且您的团队A不会将其包含在其依赖项中。
第二种方法:您可以转到vs2013项目,并使用最新的配置(NuGet.Config文件)更新对新存储库的所有引用,该配置应该可以正常工作
当我需要从头开始配置NuGet时,请按照以下步骤操作
NUGET CONFIGURATION:方法是统一和减少所有项目的重复依赖项,并将它们放置在每个项目都可以使用的公共位置。 好处不仅在于统一依赖关系;还在于 它还减少了TFS上的空间,并保留了用于自动构建的分层结构。
步骤1:Nuget包的通用文件夹
首先,您需要在所有项目的根目录级别创建Common文件夹,并在其中包含Packages文件夹。 如果要将其他项目中拥有的所有.NuGet包都希望复制到后者文件夹中,或者在包含新依赖项时将其保留在Visual Studio中,则可以手动进行手动复制。 Common将用作Nuget存储库,但在这种情况下,将用作本地Nuget。 资料库。 您的Visual Studio配置应该知道这一点。 继续下一步
然后,您需要使用加号按钮创建一个新的种子存储库(您的本地存储库)。 下面我命名为:Packages。 之后,浏览文件夹中的新软件包。 然后点击确定
然后转到程序包源并选择“程序包”,您将在“程序包”文件夹中看到所有可用的程序包,这些程序在第一次应为空
这里的想法是从Packages文件夹而不是从Nuget存储库中下载我们需要的软件包,如果该软件包不存在,请转到search to nuget.org选项并从那里下载该软件包。 效果应该一样
步骤2:准备配置文件
在这里,我们要避免Nuget将软件包保存在项目根目录下的“ packages”文件夹中,这是下载软件包时nuget的默认行为。
而是我们要将包下载到Common / Package文件夹。 为此,我们需要在结构中添加一个Nuget.config文件。 在项目的根目录下创建一个NuGet.Config文件。 TFS视图
里面的NuGet.Config类型
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value="$\..\Common\Packages" />
</config>
</configuration>
对于repositoryPath设置,您可以使用$令牌指定绝对路径或相对路径(推荐)。 $令牌基于NuGet.Config的位置($令牌实际上是相对于NuGet.Config位置下方的一级)。 因此,如果我有\\ Team Project \\ NuGet.Config并想要\\ Team Project \\ Common \\ Packages,则需要指定$ .. \\ Common \\ Packages作为值。
步骤3:最后一步。
开始下载软件包,并确保签入所有更改。 如果您在项目的根目录下有一个package文件夹,那么您可以删除它,以防您想对新文件夹设置正确的引用。 如果您要删除它,请随时将其删除。 但是,如果要保留指向程序包的旧代码并开始为以后的程序包使用新的Common文件夹,则需要同时保留两者。 在我固定所有引用的下面,没有“ package”文件夹,并且仍然可以包括新的软件包。
请享用!!!
很抱歉告诉您这不可能。 为适应.Net Core和其他版本的VS(即Mac的VS),这是一项重大更改。 在查看vs 2017 RC和.net核心工具预览时,我偶然发现了此信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.