Lỗi khi xuất bản trang web ASP.NET Core 3.1 sang Azure từ Visual Studio 2019


9

Tôi có một ứng dụng ASP.NET Core 3.0 đã có từ trước , được triển khai thành công cho Dịch vụ ứng dụng Azure (sử dụng AspNetCoreModuleV2mô-đun). Sau khi nâng cấp ứng dụng lên (bản phát hành hôm nay) ASP.NET Core 3.1 , ứng dụng sẽ xây dựng và chạy chính xác trên phiên bản IIS Express cục bộ của tôi . Tuy nhiên, khi tôi cố gắng xuất bản lên Dịch vụ ứng dụng Azure bằng cách sử dụng (bản phát hành hôm nay) Visual Studio 16.4 , tôi nhận được lỗi sau:

Tệp tài sản 'C: \ Project \ obj \ project.assets.json' không có mục tiêu cho '.NETCoreApp, Version = v3.0'. Đảm bảo rằng khôi phục đã chạy và bạn đã bao gồm 'netcor Ứng dụng 3.0' trong TargetFrameworks cho dự án của bạn.

Ghi chú

  • Tất cả <PackageReference>là để Microsoft.AspNetCore, Microsoft.EntityFrameworkCoreMicrosoft.Extensionsđã được cập nhật để3.1.0
  • Tôi đã làm sạch giải pháp của mình và thậm chí thu gọn objthư mục của mình để đảm bảo không có bất kỳ tài liệu tham khảo nào.
  • Lỗi này đang được tạo ra từ 3.1.100phiên bản của Microsoft.PackageDependencyResolution.targets.

Tôi nhận được rằng một cái gì đó vẫn còn treo trên các phụ thuộc .NET Core 3.0 . Nhưng không rõ tại sao điều đó chỉ gây ra vấn đề trong quá trình triển khai. Là Azure App dịch vụ chưa sẵn sàng cho .NET Lõi 3.1 ? Hay đây là một vấn đề với các mục tiêu giải quyết phụ thuộc?


Cảm ơn bạn @Panagiotis Kanavos đã gắn thẻ này với asp.net-core-3.1. Tôi thiếu danh tiếng cần thiết để tạo một thẻ mới.
Jeremy Caney

Rõ ràng, bước tiếp theo của tôi sẽ là bắt đầu với mẫu dự án ASP.NET Core 3.1 mới , cố gắng triển khai sang dịch vụ Ứng dụng Azure mới và sau đó giới thiệu lại các phụ thuộc cho đến khi tôi có thể tái tạo vấn đề. Tôi sẽ không có thời gian để làm điều đó cho đến cuối tuần này. Cho đến lúc đó, tôi đã hy vọng người khác có thể có một cái nhìn sâu sắc về loại lỗi này, hoặc đã tự tìm ra giải pháp.
Jeremy Caney

Các tài liệu cho thấy cách chọn rõ ràng phiên bản .NET Core SDK . Bạn đã thử chưa? SDK 3.1 có xuất hiện trong danh sách không?
Panagiotis Kanavos

@PanagiotisKanavos: Dự án này chưa được xuất bản bằng Azure Pipelines . Điều đó nói rằng, điều này không nhắc nhở tôi rằng có cũng một <TargetFramework>thiết lập trong pubxmlhồ sơ rằng Visual Studio dựa vào, mà tôi cách nhau trên. Giáo sư! Thay đổi điều đó để netcoreapp3.1phù hợp với csprojmục tiêu giải quyết vấn đề trước mắt. (Giới thiệu này là một vấn đề mới với Azure App Dịch vụ tự vấp ngã trên mục tiêu, nhưng điều đó có lẽ có thể được giải quyết bằng cách sử dụng một triển khai khép kín, tương tự như các liên kết mà bạn cung cấp.) Cảm ơn bạn đã chỉ cho tôi đi đúng hướng!
Jeremy Caney

1
Vâng cảm ơn lòng tốt vì đã tìm thấy câu hỏi này (và câu trả lời). Tôi bắt đầu trở nên khá thất vọng với việc áp dụng các thay đổi cạnh MS (theo khuyến nghị và khuyến khích của họ) chỉ để tiếp tục gặp phải các vấn đề như thế này.
Frank

Câu trả lời:


13

Vấn đề ngay lập tức, như được xác định trong câu hỏi ban đầu, có liên quan đến việc có hai nơi <TargetFramework>được đặt:

  1. Tệp dự án (ví dụ csproj:)
  2. Các hồ sơ xuất bản (ví dụ pubxml)

Các <TargetFramework>phải được cập nhật trong cả hai địa điểm, và họ phải phù hợp chính xác . Nếu không, việc xuất bản sẽ không thể tìm thấy mục tiêu của nó trong project.assets.jsontập tin, được xây dựng dựa trên <TargetFramework>trong csjprojtập tin.

Lưu ý: Bạn cũng có thể mong đợipubxmltệp sẽ trì hoãn<TargetFramework>tập hợp trongcsprojtệp, nhưng đó không phải là trường hợp.

Trình soạn thảo văn bản

Để thực hiện sửa đổi này thông qua trình soạn thảo văn bản,

  1. Mở ~/Properties/PublishProfilesthư mục.
  2. Mở *.pubxmlbạn muốn chỉnh sửa.
  3. Sửa đổi các giá trị của <TargetFramework>để netcoreapp3.1:
<TargetFramework>netcoreapp3.1</TargetFramework>

Phòng thu hình ảnh 2019

Để thực hiện sửa đổi này thông qua IDE Visual Studio 2019 ,

  1. Nhấp vào biểu tượng bánh răng trên thanh công cụ Web One Click Publish (nó ở bên phải biểu tượng xuất bản).
  2. Giả sử các khung Targetkhông thiết lập để netcoreapp3.1, nhấp vào biểu tượng chỉnh sửa bên cạnh nó.
  3. Đảm bảo rằng Khung mục tiêu được đặt thành netcoreapp3.1.
  4. Nhấp vào Lưu .

Cảnh báo: Khi sử dụng IDE, bạn có thể gặp sự cố tại đây. Khi chỉnh sửa hồ sơ, bạn có thể sẽ thấygiá trị mới từ tệp dự án của bạn (nghĩa lànetcoreapp3.1) đã được chọn. Tuy nhiên,khi bạn nhấp vào Lưu , nó sẽ trở lạigiá trị ban đầu (ví dụ:netcoreapp3.0trong trường hợp của tôi). Điều này là do bạn không thực sự thay đổi giá trị trong giao diện, điều mà Visual Studio nhầm lẫn khi không có thay đổi đối với cácgiá trị cơ bản . Nếu bạn tạm thời chuyển một giá trị khác (ví dụ: Cấu hình ), thì Visual Studio sẽ nhận ra rằng một sự thay đổi đã xảy ra và cả hai giá trị sẽ được cập nhật trong*.pubxmltệp.

Một lần nữa, cảm ơn bạn @PanagiotisKanavos đã chỉ cho tôi đi đúng hướng (xem bình luận về chủ đề gốc).


Cảm ơn đã đăng một giải pháp! Tôi đã vật lộn với điều này khi tôi cố gắng xuất bản tối qua và nó chẳng có ý nghĩa gì cả. Trong trình hướng dẫn xuất bản, nó luôn có 3,1 được chọn làm mục tiêu nên tôi cho rằng nó ổn, nhưng một khi tôi mở pubxtệp như bạn đã giải thích thì nó vẫn còn trên 3.0. Rất bực bội. Thành thật mà nói, tôi không có gì ngoài sự kỳ lạ, tối nghĩa và hoàn toàn hiển thị việc dừng các lỗi và sự cố kể từ khi VS 16.3 và .NET Core 3.0 được phát hành. Cảm ơn một lần nữa!
Gup3rSuR4c

Idk nếu bạn cũng nhận được điều này, nhưng thật đáng yêu khi bạn bảo nó xuất bản dưới dạng phụ thuộc khung, nó quyết định xuất bản toàn bộ khung cùng với nó. Một ấn phẩm nên là 1 phút hoặc lâu hơn, bây giờ là hơn 15 phút ...
Gup3rSuR4c

FYI: Vì ban đầu tôi đã đăng bài này, Microsoft đã cập nhật Dịch vụ ứng dụng Azure để cung cấp hỗ trợ riêng cho .NET Core 3.1 . Do đó, tôi đã xóa cảnh báo về HTTP Error 500.30 - ANCM In-Process Start Failuretin nhắn khỏi tin nhắn gốc của mình. Trước đây, điều này bắt buộc phải xuất bản một bản phân phối hoàn toàn khép kín của ứng dụng của bạn. (Điều đó nói rằng, có thường là một thời gian trễ 2-3 ngày giữa một phiên bản mới của .NET Lõi rơi, và nó được tích hợp vào các Azure App Dịch vụ môi trường, vì vậy đây là hữu ích phải nhận thức được trong bản cập nhật trong tương lai.)
Jeremy Caney

1
Thật tuyệt, tôi chỉ cập nhật phiên bản khung trong các thuộc tính của dự án và thậm chí tôi không hề nghĩ đến tệp .pubxml. Điều này đã khiến cho xuất bản của tôi bị treo, sau khi cập nhật .pubxml thành "netcorzon3.1", nó hoạt động tốt. Cảm ơn
demcodemonkey

2

Mở thư mục Project;

  • Điều hướng đến thư mục Thuộc tính >> PublishProfiles
  • Mở tệp FolderProfile.pubxml sau đó thay đổi phiên bản 3.0 thành 3.1

    netcor Ứng dụng3.1

  • Cuối cùng, xây dựng lại ứng dụng của bạn trước khi xuất bản


Lời kêu gọi tốt về việc cung cấp các hướng dẫn rõ ràng để sửa đổi pubxmltệp theo cách thủ công và đặc biệt được cung cấp cho sự hữu ích của việc sửa đổi các giá trị này thông qua GUI của Visual Studio 2019 . Tôi đã kết hợp những chi tiết này vào câu trả lời ban đầu của mình để tùy chọn này được giải thích rõ ràng. Cảm ơn bạn!
Jeremy Caney

0

thay đổi

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

làm việc cho tôi


1
Đối với ASP.NET Core 3.1 , tất cả các Microsoft.AspNetCorethư viện nên được cập nhật 3.1.0, theo ghi chú phát hành v3.1 của Microsoft. Cách tiếp cận của bạn có thể là một sửa chữa hợp lệ cho các vấn đề tương tự trong ASP.NET Core 2.2 , giả sử rằng lỗi không phải do sự không khớp giữa bạn csprojpubxcác tệp, như trong trường hợp của tôi.
Jeremy Caney

Phiên bản của hai gói được đề cập ở trên hiện đang ở phiên bản 2.2.0 và được đánh dấu là phiên bản mới nhất.
Libertad

1
@Libertad, bạn cần phải nâng cấp cài đặt visual studio của bạn lên phiên bản 16.4.0 để xem mới nhất chấm lõi ròng 3.1 phiên bản
navule

@navule VS của tôi là upodate. Các gói Aabove chỉ là gói nuget. Hãy xem cái này: nuget.org/packages/Microsoft.AspNetCore và xem phiên bản mới nhất của nó
Libertad
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.