Microsoft.AspNetCore.Mvc.ViewFeatures版本

时间:2018-09-05 16:41:06

标签: asp.net-core-2.1

自从更新到asp core 2.1.3以来,我在IIS服务器上的日志中发现以下错误消息令我感到困惑:

fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
      An unhandled exception has occurred while executing the request.
Microsoft.AspNetCore.Mvc.Razor.Compilation.CompilationFailedException: One or more compilation failures occurred:
error CS1705: Assembly 'JC' with identity 'JC, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' uses 'Microsoft.AspNetCore.Mvc.ViewFeatures, Version=2.1.2.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' which has a higher version than referenced assembly 'Microsoft.AspNetCore.Mvc.ViewFeatures' with identity 'Microsoft.AspNetCore.Mvc.ViewFeatures, Version=2.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'
   at Microsoft.AspNetCore.Mvc.Razor.Internal.RazorViewCompiler.CompileAndEmit(RazorCodeDocument codeDocument, String generatedCode)
   at Microsoft.AspNetCore.Mvc.Razor.Internal.RazorViewCompiler.CompileAndEmit(String relativePath)
   at Microsoft.AspNetCore.Mvc.Razor.Internal.RazorViewCompiler.OnCacheMiss(String normalizedPath)

首先,因为它似乎只发生在某些页面上-看起来像形式,其次,因为我不确定修复它的适当方法。我安装了最新的主机捆绑包,但无济于事 https://github.com/dotnet/core/blob/master/release-notes/2.1/2.1.3/2.1.3.md

我应该手动替换应用目录中Microsoft.AspNetCore.Mvc.ViewFeatures文件夹中的dll refs吗?

2 个答案:

答案 0 :(得分:2)

当一个项目引用另一个项目并且两个项目都依赖于相同的NuGet包,但版本不同时,您将获得此信息。简单来说,解决方案是降级一个或升级另一个。选择一个版本(您可能只想使用最高版本,因为实际上没有任何理由为ViewFeatures之类的版本使用较低版本)。然后,编辑您的项目文件,并将相关的PackageReference行更改为该版本。

有可能,您实际上可能并不直接依赖于此特定程序包,而是包括它的元程序包,例如Microsoft.AspNetCore.App。但是,同样的事情也适用。确保该meta包的两个项目都使用相同的版本。

最后一个不幸的可能是一个项目依赖于meta软件包,而另一个项目直接依赖于ViewFeatures软件包,而一个项目的版本可能不一定与另一个项目的版本实际上一致。在这种情况下,您可以在nuget.org上查看meta软件包,并查看其中包含的单个软件包的版本(它将列为meta软件包的依赖项)。确保您对单个包装的引用匹配。

长短不一,这可能需要一些工作量,但是想法是,如果要相互引用一个项目,则需要使两个项目都使用此程序包的同一版本。

答案 1 :(得分:0)

我认为我最近遇到了相同的问题,只是包装不同。

就像@Chris Pratt回答的那样,简而言之,我认为您有两个项目,JCRefersToJC。意思是,第二个项目依赖于JC。 (请帮助我对此进行确认)。

它们两者都取决于Microsoft.AspNetCore.Mvc.ViewFeatures。但是,JC确实指定了它想要的版本为 2.1.2.0 。而其他RefersToJC要求版本为 2.1.1.0或根本没有指定任何版本

因此,在RefersToJC.SomeClass内,行JC.SomeClass.Something()将引发CS1705错误。

解决方案:打开Manage Nuget packages...项目的RefersToJC并下载版本为2.1.2的Microsoft.AspNetCore.Mvc.ViewFeatures(即使我们有Microsoft.AspNetCore.App元包。)

是的,它以某种方式弄乱了,新的项目(不是从旧版本迁移)可以正常工作。