从 Visual Studio 2019 将 ASP.NET Core 3.1 站点发布到 Azure 时出错

Jer*_*ney 12 visual-studio webdeploy azure-web-app-service asp.net-core asp.net-core-3.1

我有一个预先存在的ASP.NET Core 3.0应用程序,它已成功部署到Azure 应用服务(使用AspNetCoreModuleV2模块)。将应用程序升级到(今天的版本)ASP.NET Core 3.1 后,应用程序在我的本地版本IIS Express上构建并正确运行。但是,当我尝试使用(今天发布的)Visual Studio 16.4发布到 Azure 应用服务时,我收到以下错误:

资产文件“C:\Project\obj\project.assets.json”没有“.NETCoreApp,Version=v3.0”的目标。确保恢复已运行并且您已在项目的 TargetFrameworks 中包含“netcoreapp3.0”。

笔记

  • 全部<PackageReference>Microsoft.AspNetCore, Microsoft.EntityFrameworkCore, 并且Microsoft.Extensions已更新为3.1.0
  • 我已经清理了我的解决方案,甚至修改了我的obj文件夹以确保没有任何遗留的引用。
  • 正在从产生这个错误3.1.100的版本Microsoft.PackageDependencyResolution.targets

我知道有些东西仍然挂在.NET Core 3.0依赖项上。但目前还不清楚为什么这只会在部署过程中引起问题。是Azure的应用程序Service的还没有准备好.NET 3.1的核心?或者这是依赖解析目标的问题?

Jer*_*ney 16

直接的问题——如原始问题中所确定的——与<TargetFramework>设置的两个地方有关:

  1. 项目文件(如csproj
  2. 发布配置文件(即pubxml

<TargetFramework>必须更新这两个位置,他们必须匹配准确。否则,出版将无法找到其目标project.assets.json文件,这是基于内置<TargetFramework>的的csjproj文件。

注意:您可能希望pubxml文件遵循文件中的<TargetFramework>设置csproj,但事实并非如此。

文本编辑器

要通过文本编辑器进行此修改,

  1. 打开~/Properties/PublishProfiles文件夹。
  2. 打开*.pubxml要编辑的。
  3. 修改<TargetFramework>to的值netcoreapp3.1
<TargetFramework>netcoreapp3.1</TargetFramework>
Run Code Online (Sandbox Code Playgroud)

视觉工作室 2019

要通过Visual Studio 2019 IDE进行此修改,

  1. 单击Web 一键发布工具栏上的齿轮图标(位于发布图标的右侧)。
  2. 假设目标框架设置netcoreapp3.1,单击编辑图标旁边。
  3. 确保目标框架设置为netcoreapp3.1.
  4. 点击保存

警告:使用 IDE 时,您可能会在这里遇到问题。编辑配置文件时,您可能会看到已选择的项目文件(即)中的netcoreapp3.1。但是,当您单击Save时,它将恢复为原始值(例如,netcoreapp3.0在我的情况下)。这是因为您实际上并未更改界面中的值,Visual Studio 将其误认为没有更改基础值。如果您临时切换另一个值(例如Configuration),则 Visual Studio 将识别已发生更改,并且文件中的两个值都将更新*.pubxml

再次感谢@PanagiotisKanavos 为我指明了正确的方向(请参阅对原始线程的评论)。