MVC 项目中包之间的歧义

本文关键字:之间 歧义 项目 包之间 MVC | 更新日期: 2023-09-27 18:30:26

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

类型名称"NuGet.VisualStudio.IVsPackageInstallerServices

"不明确,可能是"NuGet.VisualStudio.IVsPackageInstallerServices, Microsoft.VisualStudio.Authentication.ConnectedServices, version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或 'NuGet.VisualStudio.IVsPackageInstallerServices, Microsoft.VisualStudio.Web.Project, version=2.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'。 At E:''AllData''Dropbox''Pro Gaming''www''Pro_Gaming''packages''EntityFramework.6.1.3''tools''EntityFramework.psm1:1004 char:5 + $packageInstallerServices = $componentModel.GetService([NuGet.Vis ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 类别信息 : 无效参数: (:)[], 运行时异常 + 完全限定错误 ID : 歧义类型引用

也:

不能对 null 值表达式调用方法。在 E:''AllData''Dropbox''Pro Gaming''www''Pro_Gaming''packages''EntityFramework.6.1.3''tools''EntityFramework.psm1:1006 char:5 + $vsPackage = $packageInstallerServices.GetInstalledPackages() | ?... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 类别信息 : 无效操作: (:)[], 运行时异常 + FullQualifiedErrorId : InvokeMethodOnNull

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

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

之后,我决定尝试在不同的MVC解决方案上安装EntityFramework和NuGet包,它完美运行。

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

此外,"NuGet.VisualStudio.IVsPackageInstallerServices"即使在同一解决方案的文件内容中也无处可寻。

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

MVC 项目中包之间的歧义

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

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

更新:与此同时,MS已经解决了这个问题。 也就是说,如果您将来遇到类似的错误,此方法将起作用。

更新:在Windows 10 Redstone的内部版本14291中确认修复了底层PowerShell问题。

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

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

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

我们最终通过查看记事本++中的.csproj和.sln文件来解决。 对我们来说,文件中存在对 VS2015 UI 中未显示的程序集的引用。

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