自从更新到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
吗?
答案 0 :(得分:2)
当一个项目引用另一个项目并且两个项目都依赖于相同的NuGet包,但版本不同时,您将获得此信息。简单来说,解决方案是降级一个或升级另一个。选择一个版本(您可能只想使用最高版本,因为实际上没有任何理由为ViewFeatures
之类的版本使用较低版本)。然后,编辑您的项目文件,并将相关的PackageReference
行更改为该版本。
有可能,您实际上可能并不直接依赖于此特定程序包,而是包括它的元程序包,例如Microsoft.AspNetCore.App
。但是,同样的事情也适用。确保该meta包的两个项目都使用相同的版本。
最后一个不幸的可能是一个项目依赖于meta软件包,而另一个项目直接依赖于ViewFeatures
软件包,而一个项目的版本可能不一定与另一个项目的版本实际上一致。在这种情况下,您可以在nuget.org上查看meta软件包,并查看其中包含的单个软件包的版本(它将列为meta软件包的依赖项)。确保您对单个包装的引用匹配。
长短不一,这可能需要一些工作量,但是想法是,如果要相互引用一个项目,则需要使两个项目都使用此程序包的同一版本。
答案 1 :(得分:0)
我认为我最近遇到了相同的问题,只是包装不同。
就像@Chris Pratt回答的那样,简而言之,我认为您有两个项目,JC
和RefersToJC
。意思是,第二个项目依赖于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
元包。)
是的,它以某种方式弄乱了,新的项目(不是从旧版本迁移)可以正常工作。