繁体   English   中英

配置Nuget.Config在VS2013和VS2017中都可以工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM