【问题标题】:Nuget Package-Install broke our Umbraco projectNuget Package-Install 破坏了我们的 Umbraco 项目
【发布时间】:2016-12-10 15:50:16
【问题描述】:

我想将 JsonConvert 添加到项目中。我对 .NET 开发非常陌生,但我认为它类似于 apt-get。安装包,开始工作。

我打开 Nuget,执行 Package-Install NewtonSoft.Json

它迅速卸载了很多软件包,然后在没有提示的情况下重新安装了这些软件包的较新版本。

现在项目已损坏。尝试加载网站的开发版本。

“无法加载文件或程序集‘UrlRewritingNet.UrlRewriter’或其依赖项之一。系统找不到指定的文件。”

然后我尝试运行 Update-Package -restore... 希望它能够以某种方式将事物回滚到它们开始对我们的安装产生兴趣之前的状态。没有运气。

更新 3:

在 Uninstall-Package 中添加 remove-dependencies 和 force,终于可以删除 NuGet 自发添加的 UmbracoCms.Core.7.5.2 安装。现在的问题是安装 UmbracoCms.Core.7.2.1,因为您似乎无法通过 Package-Install 来添加它。

PM> Install-Package UmbracoCms.Core.7.2.1
Install-Package : Unable to find package 'UmbracoCms.Core.7.2.1'
At line:1 char:16
+ Install-Package <<<<  UmbracoCms.Core.7.2.1
    + CategoryInfo          : NotSpecified: (:) [Install-Package], Exception
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManag 
   ement.PowerShellCmdlets.InstallPackageCommand

更新 4:

发现您必须使用 -version 指定版本。结果如下。

PM> Install-Package UmbracoCms.Core -version 7.2.1
Attempting to gather dependency information for package 'UmbracoCms.Core.7.2.1' with respect to project 'Website', targeting '.NETFramework,Version=v4.5'
Attempting to resolve dependencies for package 'UmbracoCms.Core.7.2.1' with DependencyBehavior 'Lowest'
Install-Package : Unable to find a version of 'Microsoft.AspNet.Mvc' that is co
mpatible with 'ClientDependency-Mvc 1.8.0 constraint: Microsoft.AspNet.Mvc (>= 
4.0.20710)', 'Microsoft.AspNet.Mvc.FixedDisplayModes 5.0.0 constraint: Microsof
t.AspNet.Mvc (>= 5.0.0)', 'UmbracoCms.Core 7.2.1 constraint: Microsoft.AspNet.M
vc (>= 4.0.30506 && < 5.0.0)'.
At line:1 char:16
+ Install-Package <<<<  UmbracoCms.Core -version 7.2.1
    + CategoryInfo          : NotSpecified: (:) [Install-Package], Exception
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand

更新 5:

官方不知道该怎么做...在我的整个编程生涯中,我从未经历过这样的事情。

我正要坐下来,对前端进行一些轻微的更改,但找不到 JsonConvert...在我的天真中,我用 Nuget 安装了 NewtonSoft.Json,然后它安装了新版本的 UmbracoCms...没有提示!然后我设法将其删除...现在我无法安装旧版本。

更新 6:

网络上的讨论告诉我,这是等待任何使用 NuGet 的人的巨大陷阱,开发人员自己也承认它被设计破坏了。安装 NewtonSoft.Json 对我来说是一个错误...现在我不确定如何在我删除它的一个解决方案上重新安装正确版本的 UmbracoCms。

我会告诉我的老板开发时间因此被延长了。

【问题讨论】:

    标签: .net visual-studio nuget umbraco


    【解决方案1】:

    NewtonSoft.Json 是 Umbraco 的依赖项,并且已经成为您解决方案的一部分 - 但在与 Umbraco 兼容的特定版本中。您最终要做的是升级 NewtonSoft.Json,这会触发每个依赖于它的软件包的卸载或升级(不支持较新版本时卸载)。

    我认为应该可以通过卸载 NewtonSoft.Json 并重新安装 UmbracoCms 来解决。

    【讨论】:

    • 感谢您的回答。我试图这样做只是为了得到这个。 “试图收集包'Newtonsoft.Json.9.0.1'与项目'网站'的依赖关系信息,针对'.NETFramework,Version = v4.5'解决卸载包'Newtonsoft.Json.9.0.1'的操作卸载包:无法卸载“Newtonsoft.Json.9.0.1”,因为“Micros oft.AspNet.WebApi.Client.5.2.3, UmbracoCms.Core.7.5.2”依赖于它”
    • 得到什么?您已尝试恢复,我建议删除并安装。那不是一回事。另外我在日志中的任何地方都没有看到 UmbracoCms 包,您是否偶然只安装了 UmbracoCms.Core?
    • 据我在 web.config 中看到的 Umbraco 版本应该是:
    • 哦,对不起,它回滚了卸载(并重新添加了软件包),我误读了。基本上你想从头开始,所以也许先尝试卸载 UmbracoCms,然后(如果它仍然存在)卸载 NewtonSoft.Json?
    • 当我输入 Package-Uninstall UmbracoCms 或 Package-Install UmbracoCms(有或没有版本号)时,什么都没有发生。我没有收到任何错误消息,也没有任何迹象表明正在发生任何事情。这是预期的行为吗?
    【解决方案2】:

    当我使用 NuGetNewtonSoft.Json7.0.1 升级到最新版本时遇到类似问题。很奇怪,当我运行应用程序时它要求一些许可证。所以我搬回7.0.1,从那时起就一直坚持下去。

    我列出了我为刷新解决方案中的所有包而执行的步骤。可能有更好的方法,但这对我有用。

    1. 删除了 packages 文件夹中的所有内容。
    2. 使用我能找到的所有选项清理了 nuget 缓存。 See
    3. 验证 package.config 中列出的所有包和版本是否正确。
    4. 我安装了 nugetPowerTools。因此,启用了 NuGet 包还原。
    5. VS 重启。
    6. 构建解决方案,所有缺少的包都已下载。

    HTH。

    【讨论】:

    • 当我从震惊中恢复过来时,我一定会尝试的。 :)
    猜你喜欢
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 2021-03-05
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多