【问题标题】:How to resolve? Assuming assembly reference 'System.Web.Mvc如何解决?假设程序集引用'System.Web.Mvc
【发布时间】:2015-08-20 06:18:42
【问题描述】:

参考questions/26393157/windows-update-caused-mvc3-and-mvc4-stop-working。解决以下警告的最快方法是什么?

假设程序集引用 'System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 匹配 'System.Web.Mvc,版本=4.0.0.1,文化=中性, PublicKeyToken=31bf3856ad364e35',您可能需要提供运行时 政策。

【问题讨论】:

标签: c# .net asp.net-mvc asp.net-mvc-4


【解决方案1】:

我的 NuGet 包偶尔会发生这种情况。我无法确切地确定它是如何发生的。 (我假设用户错误。) 我不需要升级任何东西来解决它,只需清除 NuGet 缓存即可:

我使用找到here的nuget命令行工具。

您可以使用此命令清除所有缓存:

nuget locals all -clear

见:https://docs.nuget.org/consume/command-line-reference

如果 Visual Studio 已打开,您可能需要重新启动它。

【讨论】:

  • 在我的情况下,我还必须重新启动 Visual Studio 才能删除这些消息
  • 如果您在已建立的解决方案中“突然”看到此错误弹出窗口,这是该问题的最佳答案。
【解决方案2】:

根据问题的最佳答案......

  • 更新 MVC 包(Visual Studio > 右键单击​​项目/解决方案 > 管理 nuget 包 > 更新 > Microsoft ASP.NET MVC > 更新)
  • 手动添加编译程序集

然后

  • 查找 - System.Web.Mvc,版本=4.0.0.0
  • 并替换为 - System.Web.Mvc, Version=4.0.0.1

这将在 Views/Web.config 文件中找到所有隐藏的引用。

【讨论】:

  • “更新 MVC 包”是什么意思?这将需要大量测试...是否可以不更新它并解决问题?
  • 如果有更新的愿望:那么更新软件包由于某种原因不会更新 web.config 文件,这给我带来了问题。因此需要额外的查找/替换步骤。
  • @SimonLegg 我更新了所有包并重新启动,它工作正常。
  • @ARUNEdathadan - 在这种情况下,我的问题可能是其他问题 - 也许按照 Brian Merrel 的回答清除 NuGet 缓存可能会解决它。
【解决方案3】:

每次我遇到这个问题时,我总是先进行重建,这将清除你的 bin 文件夹。您可能不需要关闭和打开视觉工作室,因为我从来没有,它应该可以工作。

如果这不起作用,请尝试上述更复杂的解决方案,但这可能是一个快速、干净的解决方案。

【讨论】:

    【解决方案4】:

    我在 RoslynPad 中收到此警告,因为我引用的一个 dll(对我来说是 mscorlib.dll)使用了与通过 NuGet 检索到的版本不同的版本。正如警告所述,您可以通过运行时策略来解决它,该策略带有指向您要使用的版本的 dll 的链接。只需在文件顶部添加如下内容:

    #r "C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorlib.dll"
    

    【讨论】:

      【解决方案5】:

      抱歉,回复晚了,但在我的情况下,出现此警告是因为我在 Visual Studio 解决方案中使用了不同版本的 Microsoft.AspNet.Mvc。我可以通过将旧软件包升级到相同版本来摆脱它。

      希望这对某人有所帮助。

      【讨论】:

        【解决方案6】:

        在多次尝试后对我有用的是从 NuGet 更新应用程序洞察力和所有包。然后我确保 App 洞察中没有版本冲突,并且运行良好。

        【讨论】:

          【解决方案7】:

          不要直接从您的 cshtml 代码中引用 NuGet 包组件和接口。相反,编写您自己的组件、扩展方法和视图模型,从放置在 cs 文件中的纯 C# 代码引用它们。首先,您不会收到 CS1702 警告。其次,这将有助于将来迁移到更新版本的 NuGet 包甚至另一个包:编译器将向您显示所有必要的修复。

          这可能是您的运行时策略所需的更改。

          【讨论】:

            【解决方案8】:

            在测试了所有的命题之后,我终于通过编辑我的Web应用程序的.csproj并将属性MvcBuildViews设置为false,成功摆脱了警告。

            也许这会对你们中的一些人有所帮助。

            【讨论】:

            • MvcBuildViews = true 有助于在编译时而不是运行时捕获错误。将其设置为 false 仅意味着您的视图不会被类型检查,并且任何错误都不会在运行时出现。
            猜你喜欢
            • 2012-08-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-05-22
            • 1970-01-01
            • 1970-01-01
            • 2014-03-19
            • 1970-01-01
            相关资源
            最近更新 更多