我们的项目配置为使用asp.net core 2.1.0版本。但是,调试器显示正在加载2.1.1版本的sdk程序集。例如
已加载的程序集'C:\ Program Files \ dotnet \ shared \ Microsoft.NETCore.App \ 2.1.1 \ System.Private.CoreLib.dll”
dotnet —版本返回2.1.300(根据[https://www.microsoft.com/net/download/dotnet-core/2.1]等于2.1.0。
计算机上版本最高的SDK是C:\ Program Files \ dotnet \ sdk \ 2.1.300。
dotnet / shared目录显示了Microsoft.AspNetCore.All,Microsoft.AspNetCore.App和Microsoft.NetCoreApp下的2.1.0和2.1.1的子目录。
项目中没有有趣的对字符串2.1.1
的引用。
项目SDK为
注册表中有对2.1.1 SDK的引用(目的不明确)。 (这是我可以与下面的dotnet info Host一起解释的最佳竞争者。)
dotnet —info shows
主机(可用于支持):
版本:2.1.1
提交:6985b9f684
我想知道那是哪里来的。
毫不奇怪,关于此的大多数讨论建议从v2.1.0升级到2.1.1。但是,知道发生了什么会很有启发性。
由于历史原因,该项目位于2.1.0上。我们对某些.NET Framework依赖项有一些自由,因此更改版本是要提防的领域。但是,在我们不可避免地升级到2.1.3(或任何最新版本)之前,最好先解决这一问题。
这个问题不仅仅是学术问题。在服务器运行时修改剃须刀页面时,会出现以下错误。我假设/希望它与上述有关。这些页面由Kestrel直接提供。
两种类型中都存在'RazorViewAttribute'类型 'Microsoft.AspNetCore.Mvc.Razor,版本= 2.1.0.0,文化=中性, PublicKeyToken = adb9793829ddae60”和“ Microsoft.AspNetCore.Mvc.Razor”, 版本= 2.1.1.0,文化=中性,PublicKeyToken = adb9793829ddae60'
答案 0 :(得分:2)
.NET Core应用程序以两种模式之一运行,这些模式取决于框架或独立。您的应用程序以依赖于框架的模式运行,这意味着.NET Core的前滚策略将您的应用程序升级到2.1.1,因为这是安装的最高版本2.1。*。参见https://docs.microsoft.com/en-us/dotnet/core/versions/selection#framework-dependent-apps-roll-forward。
此外,我建议您看一下此博客文章,其中详细介绍了Microsoft.AspNetCore.App的PackageReference与运行它的共享框架之间的关系。 https://natemcmaster.com/blog/2018/08/29/netcore-primitives-2/