【问题标题】:Ambiguity between packages in MVC projectMVC项目中包之间的歧义
【发布时间】:2016-04-19 18:45:00
【问题描述】:

我正在尝试更新 MVC 5 项目中的迁移时突然收到所有这些错误:

类型名称“NuGet.VisualStudio.IVsPackageInstallerServices”不明确,可能是“NuGet.VisualStudio.IVsPackageInstallerServices, Microsoft.VisualStudio.Authentication.ConnectedServices, Version=1.0.0.0, 文化=中性,PublicKeyToken=31bf3856ad364e35'或'NuGet.VisualStudio.IVsPackageInstallerServices,Microsoft.VisualStudio.Web.Project,版本=2.3.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。 在 E:\AllData\Dropbox\Pro Gaming\www\Pro_Gaming\packages\EntityFramework.6.1.3\tools\EntityFramework.psm1:1004 char:5 + $packageInstallerServices = $componentModel.GetService([NuGet.Vis ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [], RuntimeException + FullyQualifiedErrorId : AmbiguousTypeReference

还有:

您不能在空值表达式上调用方法。在 E:\AllData\Dropbox\Pro Gaming\www\Pro_Gaming\packages\EntityFramework.6.1.3\tools\EntityFramework.psm1:1006 char:5 + $vsPackage = $packageInstallerServices.GetInstalledPackages() | ? ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull

还有许多其他错误涉及这个问题的空值产品,我在这篇文章中省略了。

我首先认为这是 Visual Studio 的 NuGet 的问题,所以我重新安装了它。然后,我尝试重新安装实体框架。

之后,我决定尝试在不同的 MVC 解决方案上安装 EntityFramework 和 NuGet 包,结果完美无缺。

我还强制卸载和安装实体框架(使用 -reinstall 和 updatePackage 命令),但无济于事。我已经在文件夹中搜索过任何重复的文件名,但我还没有找到。

此外,即使在同一解决方案的文件内容中,也找不到“NuGet.VisualStudio.IVsPackageInstallerServices”。

所以问题出在这个特定的解决方案上!

【问题讨论】:

  • 查看stackoverflow.com/questions/34883705/…social.msdn.microsoft.com/Forums/en-US/… 通过从Windows 10 build 11099 后退一步解决了这个问题,这似乎是导致问题的原因。
  • 问题还在11102 :(
  • @StephenReindl: Nooooooooooooo :( 真讨厌那个。哦,好吧......当我们想要超快的内部构建时会发生这种情况。
  • 查看@stefan-z-camilleri 的答案作为工作:) 解决方法

标签: c# asp.net-mvc entity-framework visual-studio


【解决方案1】:

更新:底层 PowerShell 问题已在 Windows 10 Redstone 的内部版本 14291 中得到确认。

我们发现最新的 Windows 预览版本的行为发生了变化,我们正在与 Windows 和 Visual Studio 团队合作找出解决方案。

我们将发布有关此错误的任何更新:https://entityframework.codeplex.com/workitem/2872

【讨论】:

  • CodePlex 上引用的错误被标记为“已解决”,但评论明确指出该修复只能通过新的 Windows 内部版本提供,但尚未发生。这真的不应该被标记为已解决,直到它真正解决并为我们所有人工作,为什么对 PowerShell(和/或 EF)的更新需要一个新的操作系统版本才能解决这个问题?
  • 因为 PowerShell 随 Windows 一起提供。我认为这是一个有效的解释,与其他任何解释一样,在该修复程序向公众提供之前,不应将该错误标记为已解决。但是,该错误数据库属于 EF 团队,我们无法直接控制修复程序的分发。事实上,我将状态切换为已解决,这是我们在该错误数据库中很少使用的状态,其特定目的是传达我们已修复的好消息。我计划仅在我们验证修复后将错误移至关闭状态。这反映了常见的做法。
【解决方案2】:

在微软解决这个问题之前,我已经在这里发布了一个解决方法 -> http://edd.stefancamilleri.com/2016/02/14/update-database-fails-in-package-manager-console-on-windows-10-insider-preview-with-ambiguous-type-error/

您可以使用类型别名来绕过它。

更新:与此同时,MS 已修复此问题。也就是说,如果您以后遇到类似的错误,此方法将起作用。

【讨论】:

  • 哇!伟大的!如果我回到预览计划,我一定会应用它!
  • 对我不起作用。假设您必须安装 Resharper 才能正常工作? Cannot convert argument "type", with value: "Nuget.VisualStudio.IVsPackageInstallerServices, JetBrains.Platform.VisualStudio.SinceVs11, Version=104.0.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325", for "Add" to type "System.Type"
  • 在您的特定情况下,类型歧义可能在另外两个库之间。该错误通常会为您提供两种冲突类型的完全限定类型名称,您只需使用其中一种。我的示例特定于我的设置,因此您可能会有所不同。如果您使用正确的类型进行替换,则别名方法应该可以工作。你能试试吗?
【解决方案3】:

无法访问项目,很难调试。但是 - 我可以告诉你,我们最近迁移到 VS2015(并更新了 MVC)并遇到了一些相同的错误。

我们最终通过查看 notepad++ 中的 .csproj 和 .sln 文件解决了问题。对我们来说,文件中的程序集引用并没有显示在 VS2015 UI 中。

手动删除旧引用,保存 csproj 文件,然后在 VS2015 中重新打开解决方案为我们解决了问题。

【讨论】:

猜你喜欢
  • 2019-03-29
  • 2012-11-02
  • 2023-04-06
  • 2011-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多