2017-04-10 275 views
0

下面是我目前在VS2013中工作的nuget.config。配置Nuget.Config在VS2013和VS2017中工作

即时通讯寻找转移到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> 

回答

-1

我很遗憾地告诉你,这是不可能的。这是一个突破性的变化,以适应.Net Core和其他版本的VS(即VS for Mac)。我在查看vs 2017 RC和.net核心工具预览时偶然发现了这些信息。

0

我的建议是更新最新版本的nuget版本,然后在团队中的所有视觉工作室中添加nuget存储库以指向相同的文件夹位置。

enter image description here

,你需要了解的唯一的事情,至少是如果使用2013版本的开发者(A队)一个删除一个包不应该有使用2017年开发(B队)的任何问题因为当你获得最新版本的资料库文件夹后,当Nuget识别出该文件夹不在包文件夹中时,因为它可以根据package.config来识别哪些文件已安装,哪些不是,那么你应该再次得到依赖项它作为源代码管理工具的新变化,之后第二个项目将指向正确的引用,并且您的团队A将不会将其作为其依赖项的一部分包含在内。

第二种方法:你可以去你的vs2013项目,并更新到使用最新的配置(NuGet.Config文件)新的存储库,应该工作的所有引用

下面是我按照我需要的步骤从零开始配置NuGet

NUGET CONFIGURATION: 该方法是统一和减少所有项目的重复依赖关系,并将它们放置在每个项目都可以使用的共同位置。优点不仅仅是统一依赖关系;它还减少了TFS上的空间,并保留了自动构建的分层结构。

STEP 1:常见的NuGet软件包的文件夹

enter image description here

首先,你需要在一个软件包你所有项目的根级别创建Common文件夹文件夹内。如果您希望在其他项目中包含的所有.NuGet包到后面的文件夹,或者在包含新的依赖关系时将其保留到Visual Studio,请随意手动复制。 Common将作为Nuget存储库工作,但在本例中作为本地Nuget。库。你的Visual Studio配置应该知道这一点。按照下一步

enter image description here

然后你需要用加号按钮来创建一个新的种子库(本地)。下面我命名为:Packages。之后,浏览新包的文件夹。然后单击确定

enter image description here

现在你可以去你的项目,并请右键单击,包括一个新的依赖 enter image description here

然后去包源,并选择套餐,你会看到所有包可在包文件夹应该是空的第一次

enter image description here

这里的想法是从Packages文件夹而不是从Nuget存储库下载我们需要的软件包,如果软件包不存在,则更改为搜索nuget.org选项并从那里下载软件包。效果应该是一样的

第2步:准备配置文件

在这里我们要避免的NuGet里面保存包“套餐”的文件夹,在我们的项目,这是默认的根当你下载一个包时,nuget的行为。

enter image description here

enter image description here

相反,我们想将软件包下载到通用/包文件夹。为了做到这一点,我们需要在我们的结构中添加一个Nuget.config文件。在项目的根目录下创建一个NuGet.Config文件。 TFS查看

enter image description here

enter image description here

内NuGet.Config型

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <config> 
    <add key="repositoryPath" value="$\..\Common\Packages" /> 
    </config> 
</configuration> 

对于repositoryPath设置,您可以指定使用$令牌(推荐)的绝对路径或相对路径。基于NuGet.Config所在位置的$ token($ token实际上是相对于NuGet.Config位置下的一个级别)。所以,如果我有\ Team Project \ NuGet.Config并且我想要\ Team Project \ Common \ Packages,我需要指定$ .. \ Common \ Packages作为值。

步骤3:最后一步。

开始下载软件包并确保检入所有更改。 如果您在项目的根目录下有一个包文件夹,您可以将其删除,以防您想要对新文件夹设置正确的引用。随意删除它,如果这是你想要的。但是,如果你想让遗留代码指向包并且开始使用新的公用文件夹作为将来的包,那么你需要保留这两个包。 下面我修复了所有的引用,没有“包”文件夹,仍然可以包含新包。

enter image description here

Enjoy !!!