System.IO.FileLoadException:无法加载文件或程序集“Microsoft.AspNetCore.Mvc.Core,版本= 2.1.3.0”

问题描述 投票:0回答:3

我在 ASP.NET Core 2.1 MVC 项目中收到以下警告。

C:\程序 文件\ dotnet \ sdk .2.102 \ Sdks \ Microsoft.NET.Sdk argets \ Microsoft.NET.Sdk.DefaultItems.targets(153,5): 警告 NETSDK1071:对“Microsoft.AspNetCore.App”的 PackageReference 指定了

2.1.7
的版本。指定此包的版本 不推荐。有关更多信息,请参阅 https://aka.ms/sdkimplicitrefs

它似乎在我的

.csproj
文件中引用了这一行:

<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.7" />

如果我从 PackageReference 中删除该版本,警告就会消失,但是当我尝试启动我的项目时,我会收到此错误:

System.IO.FileLoadException:无法加载文件或程序集 'Microsoft.AspNetCore.Mvc.Core,版本=2.1.3.0,文化=中性, PublicKeyToken=adb9793829ddae60'。找到的程序集的清单 定义与程序集引用不匹配。 (例外情况来自 H结果:0x80131040)

文件名:'Microsoft.AspNetCore.Mvc.Core,版本=2.1.3.0, 文化=中立,PublicKeyToken=adb9793829ddae60'

在 MyProject.Web.Startup.ConfigureServices(IServiceCollection 服务)

--- 从先前抛出异常的位置开始的堆栈跟踪结束 ---

在 Microsoft.AspNetCore.Hosting.ConventionBasedStartup.ConfigureServices(IServiceCollection 服务)

在 Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices()

在 Microsoft.AspNetCore.Hosting.Internal.WebHost.Initialize()

--- 从先前抛出异常的位置开始的堆栈跟踪结束 ---

在 Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()

我什至不确定

Microsoft.AspNetCore.Mvc.Core, Version=2.1.3.0
来自哪里。还有人遇到同样的问题吗?

c# asp.net-mvc asp.net-core asp.net-core-2.1
3个回答
2
投票

我仍然不确定是什么导致了问题,但为了解决这个问题,我按照这篇

文章
继续更新,从
ASP.NET Core 2.1
更新到2.2

这是更新后我的

.csproj
的相关部分:

<PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>

<ItemGroup>
    <!-- Other Unrelated Packages Here -->

    <PackageReference Include="Microsoft.AspNetCore.App" />

    <!-- Other Unrelated  Packages Here -->
</ItemGroup>

然后,我将所有 NuGet 包更新到最新版本。

我想有一个解决方案,无需升级

ASP.NET Core
的版本,但由于我没有任何理由不升级,这就是我修复它的方法。


1
投票

添加这个

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.AspNetCore.Mvc.Core" publicKeyToken="adb9793829ddae60" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.1.7.0" newVersion="2.1.7.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

0
投票

就我而言,两个项目之间的

TargetFramework
是不同的(
net6.0
.net7.0
):

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
         ...
© www.soinside.com 2019 - 2024. All rights reserved.