Visual studio 不允许在解决方案中使用多个版本的NuGet软件包
我们有一个复杂的VisualStudio解决方案,其中的项目引用不同版本的相同NuGet包 我觉得这是一个不好的做法,因为可能会导致dll地狱 那么,有没有办法控制这种情况 理想情况下,它应该是以下任一部分的一部分:Visual studio 不允许在解决方案中使用多个版本的NuGet软件包,visual-studio,powershell,tfs,continuous-integration,nuget,Visual Studio,Powershell,Tfs,Continuous Integration,Nuget,我们有一个复杂的VisualStudio解决方案,其中的项目引用不同版本的相同NuGet包 我觉得这是一个不好的做法,因为可能会导致dll地狱 那么,有没有办法控制这种情况 理想情况下,它应该是以下任一部分的一部分: 解决方案构建 TFS门控签入 使用任何CI\CD工具时的交付管道 我真的很喜欢。但我找不到在VS之外的外部Powershell脚本中使用这些cmdlet(Get-Package和Get-Project-All)的方法 我看到的最简单的解决方案是编写一个自定义Powershell
- 解决方案构建
- TFS门控签入
- 使用任何CI\CD工具时的交付管道
有更简单\更标准的方法吗?您不必担心多个组件引用不同版本的软件包。NuGet就是为了迎合这种情况而构建的 使用DLL地狱,您不知道A.DLL是否可以与新版本的B.DLL一起工作。但是,对于NuGet,依赖项是通过一系列兼容的版本号显式指定的 NuGet使用的版本分辨率总是选择符合范围的依赖项的最低版本 请阅读此处了解详细信息,它很好地解释了这一点:
至少就nuget而言,nuget可以在不同的项目中安装不同版本的软件包。也就是说这是不可取的。至于哪些包被还原,它会查看包文件(XML),文件中的任何内容都会被还原
此文件可能会失去同步,具体取决于从项目/解决方案中删除包引用的方式。demoncodemonkey,感谢您的回复和有用链接。虽然它没有回答我最初的问题,但它确实有助于理解NuGet是如何工作的。我需要更深入地了解它,但目前我不明白一件事——如果NuGet自动选择适合所有引用项目的唯一版本,为什么我会在NuGet RestorePackages期间将多个版本的软件包下载到packages dir。。。