【问题标题】:The specified framework 'Microsoft.NETCore.App', version '2.2.4' was not found找不到指定的框架“Microsoft.NETCore.App”,版本“2.2.4”
【发布时间】:2020-01-16 00:37:25
【问题描述】:

我在尝试部署 .netcore 2.2 应用程序时遇到此错误:

找不到任何兼容的框架版本 找不到指定的框架“Microsoft.NETCore.App”,版本“2.2.4”。 - 检查应用程序依赖项并定位安装在以下位置的框架版本: C:\程序文件\dotnet\ - 安装 .NET Core 先决条件可能有助于解决此问题: https://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409 - .NET Core 框架和 SDK 可以从以下位置安装: https://aka.ms/dotnet-download - 安装了以下版本: 1.0.4 在 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] 1.1.1 在 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] 1.1 .12 在 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] 2.0.3 在 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] 2.0.7 在 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] 2.1.2 在 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] 2.1.4 在 [C:\Program Files\dotnet\shared\Microsoft. NETCore.App] 2.2.1 在 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

当我运行时在我的本地机器上:


    dotnet --version

我收到以下回复:“2.2.102”并且应用程序运行良好。我也只安装了 Microsoft.NET Core Runtime - 2.2.1 和 Microsoft .NET Core SDK 2.2.102。所以不支持2.2.4版本。

这是我的 web.config:


    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <location path="." inheritInChildApplications="false">
        <system.webServer>
          <handlers>
            <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
          </handlers>
          <modules runAllManagedModulesForAllRequests="true">
              <remove name="WebDAVModule"/> 
          </modules>
          <aspNetCore processPath="dotnet" arguments=".\Optics.API.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
        </system.webServer>
      </location>
    </configuration>

这是我的 .csproj:


    <Project Sdk="Microsoft.NET.Sdk.Web">
      <PropertyGroup>
        <TargetFramework>netcoreapp2.2</TargetFramework>
        <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
        <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
      </PropertyGroup>
      <ItemGroup>
        <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.1" PrivateAssets="All"/>
        <PackageReference Include="Hangfire.Core" Version="1.7.0"/>
        <PackageReference Include="Hangfire.SqlServer" Version="1.7.0"/>
        <PackageReference Include="Hangfire.AspNetCore" Version="1.7.0"/>
        <PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.1"/>
        <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="4.0.1"/>
        <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0"/>
      </ItemGroup>
    </Project>

我也通过删除 Microsoft.AspNetCore.App 的版本进行了测试


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

但即使进行了更改,我也会遇到相同的错误。此外,该应用程序部署在共享托管服务器中,我无权安装任何 sdk 或运行时,所以我应该使用现有的。有什么线索吗?

【问题讨论】:

  • 本地机器上dotnet --info 命令的输出是什么?依赖关系图也很有帮助。您可以通过导航到您的项目来生成它,然后运行 ​​dotnet msbuild /t:GenerateRestoreGraphFile /p:RestoreGraphOutputPath=graph.dg 命令,该命令将生成 graph.dg 文件,这是 json 文件。
  • 我运行 dotnet msbuild /t:GenerateRestoreGraphFile /p:RestoreGraphOutputPath=graph.dg 但没有参考 2.2.4 版

标签: asp.net-core-webapi asp.net-core-2.2 .net-core-2.2


【解决方案1】:

我解决了这个问题。

所以当我发布应用时,我会在 vs code 中运行这个命令:

dotnet publish -c release

** 此命令在我的 gcp 云虚拟机中仍然有效,但在共享主机中无效。

为了修复它,我按照以下步骤操作:

  1. 这次打开的是visual studio,不是vs code。
  2. 右键单击项目名称,然后单击发布。
  3. 在选择发布目标时,我选择了 IIS、FTP 等。
  4. 对于连接,我选择了文件系统并选择了一个目标位置。
  5. 在设置选项卡中,我选择了配置:发布,目标框架:netcoreapp2.2, 部署模式:自包含和目标运行时:win-x64

我不明白为什么我的应用之前使用该代码可以运行 2 个月。我没有太多经验,但我的猜测是他们从服务器上卸载了一些东西,为了运行需要上传更多文件的应用程序。

【讨论】:

    猜你喜欢
    • 2020-03-01
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多