以下是我目前在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>
答案 0 :(得分:0)
我的建议是更新您拥有的最新版本的nuget版本,然后在您团队的所有可视工作室中添加一个nuget存储库以指向相同的文件夹位置。
至少你需要了解的是,如果你的一个开发人员(团队A)使用2013版本删除了一个包,那么开发人员(团队B)使用2017就不会有任何问题,因为当Nuget认可你之后获取最新版本的存储库文件夹,包文件夹上没有文件夹,因为它根据已安装的package.config进行识别,哪些不存在,那么您应该再次获得依赖项,将其作为新的更改提交给您源代码控制工具,之后第二个项目将指向正确的引用,并且您的团队A不会将其作为其依赖项的一部分包含在内。
第二种方法:您可以使用最新配置(NuGet.Config文件)转到您的vs2013项目并更新对新存储库的所有引用,这应该可以正常工作
以下是我需要从头开始配置NuGet时的步骤
NUGET CONFIGURATION: 该方法是统一并减少所有项目的重复依赖关系,并将它们放在每个项目都可以使用它的公共位置。优点不仅仅是统一依赖关系;它还减少了TFS上的空间,并为自动构建保留了分层结构。
第1步:Nuget包的公共文件夹
首先,您需要在所有项目的根级别创建Common文件夹,其中包含Packages文件夹。如果您希望将其他项目中的所有.NuGet包添加到后一个文件夹,或者在包含新依赖项时将其保留到Visual Studio,请随意手动复制。 Common将作为Nuget存储库工作,但在本例中作为本地Nuget。库。您的Visual Studio配置应该知道。按照下一步
然后你需要使用加号按钮创建一个新的种子库(你的本地)。我在下面命名:包。之后浏览新包的文件夹。然后单击“确定”
然后转到package source并选择Packages,你会看到Packages文件夹中第一次应该为空的所有可用包
这里的想法是从Packages文件夹而不是从Nuget存储库下载我们需要的软件包,如果软件包不存在则更改为搜索到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设置,您可以使用$ token指定绝对路径或相对路径(推荐)。 $ token基于NuGet.Config所在的位置($ token实际上相对于NuGet.Config位置以下的一个级别)。所以,如果我有\ Team Project \ NuGet.Config,我想要\ Team Project \ Common \ Packages,我需要指定$ .. \ Common \ Packages作为值。
第3步:最后一步。
开始下载软件包并确保签入所有更改。 如果您在项目的根目录中有一个包文件夹,则可以将其删除,以防您想要设置对新文件夹的正确引用。如果这是您想要的,请随意删除它。但是,如果您希望保留遗留代码指向包并开始使用新的Common文件夹以用于将来的包,那么您需要保留两者。 下面我修复了所有引用,没有“package”文件夹,仍然可以包含新的包。
享受!!!
答案 1 :(得分:-1)
很抱歉告诉你这是不可能的。这是一个突破性的变化,以适应.Net Core和其他版本的VS(即VS for Mac)。在查看vs 2017 RC和.net核心工具预览时,我偶然发现了这些信息。