C# 在NuGet中是否有处理包依赖关系的智能方法?

C# 在NuGet中是否有处理包依赖关系的智能方法?,c#,visual-studio,nuget,C#,Visual Studio,Nuget,我们正在开发一个WPF应用程序,它具有各种“通用”依赖项(Unity、Prism等) 在添加新项目,然后为每个项目设置NuGet包依赖关系时,这一切都很好,但在升级时,这真的很痛苦,因为这意味着我们必须检查每个项目,删除旧的引用,然后从NuGet重新提取最新的包 例如,今天,我的任务是将Prism从5.0升级到6.0(无论如何都有突破性的变化),这意味着,除了修复所有名称空间冲突等,我还必须检查每个项目,删除旧引用,添加新依赖项,并清洗和重复 我的问题是,有没有更聪明的方法来处理这个问题,或者这

我们正在开发一个WPF应用程序,它具有各种“通用”依赖项(Unity、Prism等)

在添加新项目,然后为每个项目设置NuGet包依赖关系时,这一切都很好,但在升级时,这真的很痛苦,因为这意味着我们必须检查每个项目,删除旧的引用,然后从NuGet重新提取最新的包

例如,今天,我的任务是将Prism从5.0升级到6.0(无论如何都有突破性的变化),这意味着,除了修复所有名称空间冲突等,我还必须检查每个项目,删除旧引用,添加新依赖项,并清洗和重复

我的问题是,有没有更聪明的方法来处理这个问题,或者这是标准的方法

多谢各位

更新:

我最关心的是包管理器上没有显示的“主要”升级。版本5.0->6.0升级将被视为主要升级,因此不会在NuGet软件包管理器中对其应用自动更新


我不希望NuGet能够自动为我做到这一点,因为这样的升级可能(而且经常)包括破坏性的更改,但我想知道是否有一种方法可以比从每个项目的projects和packages.config中删除引用,然后使用NuGet重新添加它们更轻松地完成主要升级。对于一个相对较大的项目,这非常耗时,我想知道是否有人有更好的方法来管理此类依赖关系。

如果您像您所说的那样使用VS2013,您可以通过右键单击解决方案并选择“管理解决方案的NuGet软件包”来管理所有NuGet软件包。这将打开一个对话框,您可以在其中查看为解决方案中的所有项目安装的所有软件包以及具有可用更新的所有软件包。当您升级软件包时,VS会处理所有需要的引用更改。如果包中有破坏性的更改,那么您仍然需要修复这些更改


免责声明:我从未参与过WPF项目/解决方案,但对于Web/Forms应用程序,NuGet软件包是以这种方式处理的。

我可以理解您的痛苦,因为我和您有过类似的问题,但没有简单的方法。但当然,您需要以不同的方式打破日常开发和依赖项更新的过程

对于我所处理的项目,我使用在您所处理的解决方案之间共享的公共存储库路径,并且您需要删除所有解决方案文件夹引用以获得干净的状态

对于您处理的每个解决方案,您都需要修改指向公共目标存储库的属性组(我使用的是相对路径)

一旦所有的东西都设置好了,您就可以使用脚本(我使用的是python运行时脚本)执行更新了


实际上,您可以查看详细信息,但似乎您正在查看的是自动化过程

我在Xamarin Studio中尝试升级多个包含alpha通道问题的软件包时遇到了类似的问题,Xamarin Studio也没有VS 2015 NuGet manager的优点。最后我写了一篇文章,一天跑几次

#
# This script updates local ibGib NuGet packages for mobileGib Android app solution.
# For convenience in copy+paste in manager console:
# ../UpdateLocalNugetPackages.ps1

Update-Package commonGib
Update-Package ibGib
Update-Package languageGib.Biz
Etc.
我相信你可以定制你的NuGet命令来满足你的需要


另外,万一你不知道,你一定要读一下。我可能弄错了,但听起来您的场景可以通过Update命令来实现。

我认为您还没有使用VS2015。。。您正在使用哪个版本的Visual Studio?@DeblatonJean-Philippe 2013。我很想升级到2015年,但不幸的是,目前这不可行(企业许可等)@kha(更新后)我不确定我是否理解。我已经通过NuGet软件包管理器对Entity Framework进行了从v5.0.0到v6.1.3的重大更新,是的,有一些突破性的更改,所以我还必须修复这些更改。app.config/web.config文件中的引用被自动更新,我所要做的就是在using语句中更改一些名称空间问题。@djm61不幸的是,至少对于PRISM来说,它没有显示为更新,我必须自己手动执行。也许有些软件包可以做到这一点,但其他软件包不行?谢谢@djm61。请在我的原始帖子中查看我的更新。