【问题标题】:Error publishing an ASP.NET Core 3.1 site to Azure from Visual Studio 2019从 Visual Studio 2019 将 ASP.NET Core 3.1 站点发布到 Azure 时出错
【发布时间】:2019-12-04 08:17:59
【问题描述】:

我有一个预先存在的 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.AspNetCoreMicrosoft.EntityFrameworkCoreMicrosoft.Extensions 已更新为3.1.0
  • 我已经清理了我的解决方案,甚至删除了我的 obj 文件夹,以确保没有任何挥之不去的引用。
  • 此错误是由3.1.100 版本的Microsoft.PackageDependencyResolution.targets 生成的。

我知道 something 仍然挂在 .NET Core 3.0 依赖项上。但目前尚不清楚为什么这只会在部署期间引起问题。 Azure 应用服务的还没有为 .NET Core 3.1 做好准备吗?或者这是依赖解析目标的问题?

【问题讨论】:

  • 文档show how to explicitly select the .NET Core SDK version。你试过吗? 3.1 SDK 是否出现在列表中?
  • @PanagiotisKanavos:此项目尚未使用 Azure Pipelines 发布。也就是说,这确实提醒我 Visual Studio 所依赖的pubxml 配置文件中有一个<TargetFramework> 设置,我隔开。哎呀!将其更改为 netcoreapp3.1 以匹配 csproj 目标可以解决眼前的问题。 (这引入了一个新问题,即 Azure App Service 本身在目标上跳闸,但这可能可以通过使用自包含部署来解决,类似于您提供的链接。)谢谢你指点我方向正确!
  • 啊,时区差异...
  • 感谢上帝找到这个问题(和答案)。我开始对采用最前沿的 MS 更改(在他们的建议和鼓励下)感到非常沮丧,只是为了不断遇到这样的问题。

标签: visual-studio asp.net-core azure-web-app-service webdeploy asp.net-core-3.1


【解决方案1】:

直接问题(如原始问题中所确定)与设置 <TargetFramework> 的两个位置有关:

  1. 项目文件(例如,csproj
  2. 发布资料(即pubxml

<TargetFramework> 必须在两个位置更新,并且它们必须完全匹配。否则,发布将无法在project.assets.json 文件中找到其目标,该文件是基于csjproj 文件中的<TargetFramework> 构建的。

注意:您可能希望 pubxml 文件遵循 csproj 文件中设置的 <TargetFramework>,但那不是 情况。

文本编辑器

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

  1. 打开~/Properties/PublishProfiles 文件夹。
  2. 打开您要编辑的*.pubxml
  3. <TargetFramework>的值修改为netcoreapp3.1
<TargetFramework>netcoreapp3.1</TargetFramework>

Visual Studio 2019

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

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

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

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

【讨论】:

  • 感谢您发布解决方案!当我昨晚尝试发布时,我一直在努力解决这个问题,但这没有任何意义。在发布向导中,它总是选择 3.1 作为目标,所以我认为它没问题,但是一旦我按照你的解释打开了 pubx 文件,它仍然在 3.0 上。非常令人沮丧。老实说,自从 VS 16.3 和 .NET Core 3.0 发布以来,我除了奇怪、晦涩和完全显示停止错误和问题之外什么都没有。再次感谢!
  • Idk 如果你也得到了这个,但是当你告诉它发布为依赖于框架时,它决定与它一起发布整个框架是非常可爱的。应该是 1 分钟左右的发布,现在是 15+ 分钟...
  • 仅供参考:自从我最初发布此内容以来,Microsoft 已更新 Azure App Services 以提供对 .NET Core 3.1 的本机支持。鉴于此,我已从原始消息中删除了有关 HTTP Error 500.30 - ANCM In-Process Start Failure 消息的警告。以前,这需要发布一个完全独立的应用程序发行版。 (也就是说,从 .NET Core 的新版本发布到它被集成到 Azure App Service 环境之间通常有 2-3 天的延迟时间,所以这在以后的更新中注意这一点很有用。)
  • 很好,我只更新了项目属性中的框架版本,甚至没有想到 .pubxml 文件。这导致我的发布挂起,在将 .pubxml 更新为“netcoreapp3.1”后它工作正常。谢谢
【解决方案2】:

打开项目文件夹;

  • 导航到文件夹属性>>PublishProfiles
  • 打开文件 FolderProfile.pubxml 然后将版本 3.0 更改为 3.1

    netcoreapp3.1

  • 最后,在发布之前重新构建您的应用程序

【讨论】:

  • 很好地呼吁提供手动修改 pubxml 文件的明确说明,特别是考虑到通过 Visual Studio 2019 GUI 修改这些值的愚蠢。我已将这些详细信息合并到我的原始答案中,因此明确解释了此选项。谢谢!
【解决方案3】:

在使用 VS web-publisher 时,我从 VS2019(ASP.NET Core Web 应用程序模板)中的一个全新的 net5.0 项目中收到此错误。解决方法如下:

  1. 打开文件:{project}\Properties\PublishProfiles\{project} - Web Deploy.pubxml

  2. &lt;PropertyGroup&gt; 元素内添加以下行:

    &lt;TargetFramework&gt;net5.0&lt;/TargetFramework&gt;

元素完全丢失了 - 伟大的工作 MS

【讨论】:

    【解决方案4】:

    改变

    <PackageReferenceInclude="Microsoft.AspNetCore"Version="2.2.0" />
     to 
    <PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
    

    为我工作。

    【讨论】:

    • 对于 ASP.NET Core 3.1,所有 Microsoft.AspNetCore 库都应更新为 3.1.0,根据 Microsoft 的 v3.1 发行说明。您的方法可能是对 ASP.NET Core 2.2 中类似问题的有效修复,假设错误不是由 csprojpubx 文件之间的不匹配引起的,因为它在我的情况。
    • 上述两个包的版本目前为2.2.0,标记为最新版本。
    • @Libertad,您需要将您的 Visual Studio 安装升级到版本 16.4.0 才能看到最新的 dot net core 3.1 版本
    • @navule 我的 VS 是最新的。 Aabove 包只是 nuget 包。看看这个:nuget.org/packages/Microsoft.AspNetCore 看看它的最新版本
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多