怎么解决?假设程序集引用'System.Web.Mvc

时间:2015-06-05 10:21:53

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

参考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,Version = 4.0.0.1,Culture = neutral,   PublicKeyToken = 31bf3856ad364e35',您可能需要提供运行时   政策。

8 个答案:

答案 0 :(得分:10)

我偶尔会在NuGet套餐中发生这种情况。我还没能确切地知道它是如何发生的。 (我假设用户错误。) 我没有需要升级任何东西来解决它,只需清除NuGet缓存:

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

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

nuget locals all -clear

请参阅:https://docs.nuget.org/consume/command-line-reference

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

答案 1 :(得分:9)

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

  • 更新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文件中找到所有隐藏的引用。

答案 2 :(得分:1)

每次遇到此问题时,我总是从进行重新构建开始,该操作将清除您的bin文件夹。您可能不需要像我从未那样关闭和打开Visual Studio,它应该可以工作。

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

答案 3 :(得分:0)

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

也许这可以帮助你们中的一些人。

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

不要直接从cshtml代码中引用NuGet软件包组件和接口。而是编写您自己的组件,扩展方法,并从放置在cs文件中的纯C#代码中查看引用它们的模型。首先,那么您将不会获得CS1702警告。其次,这将有助于将来向NuGet软件包甚至其他软件包的较新版本迁移:所有必要的修复程序将由编译器显示。

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

答案 6 :(得分:0)

很抱歉,我的答复很晚,但由于我在Visual Studio解决方案中使用 Microsoft.AspNet.Mvc的不同版本,因此出现此警告。通过将较旧的软件包升级到相同版本,我可以摆脱它。

希望这对某人有帮助。

答案 7 :(得分:0)

尝试几次后对我有用的是更新应用程序见解和NuGet的所有软件包。然后,我确保在App见解上没有版本冲突,并且一切正常。