Nuget Package-Install破坏了我们的Umbraco项目

时间:2016-08-25 09:40:46

标签: .net visual-studio nuget umbraco

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

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

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

现在项目已经破产。尝试加载网站的开发版本会导致。

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

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

更新3:

添加remove-dependencies并强制使用Uninstall-Package,最终可以删除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。

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

2 个答案:

答案 0 :(得分:1)

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

我认为应该通过卸载NewtonSoft.Json并重新安装UmbracoCms来解决这个问题。

答案 1 :(得分:1)

当我使用NewtonSoft.Json7.0.1NuGet升级到最新版本时遇到类似问题。这很奇怪,我在运行应用程序时要求获得一些许可证。所以我回到了7.0.1并从此坚持下去。

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

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