Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 如何跨多个共享项目同步NuGet软件包&;解决?_Visual Studio_Visual Studio 2012_Nuget_Nuget Package - Fatal编程技术网

Visual studio 如何跨多个共享项目同步NuGet软件包&;解决?

Visual studio 如何跨多个共享项目同步NuGet软件包&;解决?,visual-studio,visual-studio-2012,nuget,nuget-package,Visual Studio,Visual Studio 2012,Nuget,Nuget Package,在VisualStudio中,在多个共享项目和解决方案之间保持NuGet包同步的适当技术是什么?我们在多个解决方案中共享200多个项目。每个赛道都有一些解决方案,这些解决方案包含了赛道的部分或全部项目。我们还提供了多个平台解决方案,可用于多个轨道以及任意数量的轨道项目。不幸的是,我们有一些供应商定期对其软件包进行更新,而开发人员在使用不同的解决方案时无意中安装/更新了软件包。我们需要确保更新包,而不管使用什么解决方案 不幸的是,NuGet的站点讨论了如何执行实际的更新,但没有讨论如何同步所有内容

在VisualStudio中,在多个共享项目和解决方案之间保持NuGet包同步的适当技术是什么?我们在多个解决方案中共享200多个项目。每个赛道都有一些解决方案,这些解决方案包含了赛道的部分或全部项目。我们还提供了多个平台解决方案,可用于多个轨道以及任意数量的轨道项目。不幸的是,我们有一些供应商定期对其软件包进行更新,而开发人员在使用不同的解决方案时无意中安装/更新了软件包。我们需要确保更新包,而不管使用什么解决方案

不幸的是,NuGet的站点讨论了如何执行实际的更新,但没有讨论如何同步所有内容。。。
不幸的是,没有真正好的方法来做到这一点。。我们要做的是运行我们自己的NuGet存储库。当我们想要强制更新包时,我们会完全删除旧版本,然后上传新版本

当然,这并不能保证开发人员会获取最新的软件包,因此我们已经将在构建之前自动将所有NuGet软件包提取到解决方案中作为CI过程的一部分,因此如果一些软件包被更新,而开发人员没有跟上,那么他们的下一次提交将导致CI构建失败,迫使他们去修复它


这是一种变通方法,但这是我们所能想到的最好办法。

这在技术上是不正确的,你不能这样做。您可以使用Visual Studio 2010/2012中的内置工具来完成此操作

为了同时更新所有项目中的包,可以在解决方案级别启动Manage NuGet packages对话框

因此,右键单击解决方案,然后选择“管理解决方案的NuGet软件包”。还有普雷斯托!你走掉了

现在,虽然它不会自动“同步”它们,但它确实允许您查看哪里有重复项,并帮助您将每个项目移动到要使用的nuget软件包的正确版本


不是万能的,但它会有所帮助。

可以在一个.props文件中维护解决方案中的所有Nuget版本。但是,此过程需要手动执行一些步骤。我在github上的项目中看到了部分使用这种方法:

  • 创建扩展名为.props的新文件,例如:Versions.props

  • 对于解决方案中的每个包(在所有项目中),创建具有相应版本的属性(可以使用)

  • 
    2.0.8
    5.9.*
    
  • 在每个.cspoj文件中导入.props文件
  • 
    
  • 将.cspoj文件中的版本号替换为.props文件中相应的属性
  • 
    
    如上所述,此步骤不能手动完成。使用nuget软件包管理器安装nuget软件包将覆盖版本属性

  • 在解决方案上运行
    dotnet restore
    以更新所有包,并运行
    dotnet list package
    以列出每个项目所有请求和已解决的包

    参见相关问题: