Visual Studio 2017 không thể cập nhật gói Microsoft.NETCore.App (“Bị chặn bởi dự án”)


82

Tôi có một ứng dụng lõi dotnet đang nhắm mục tiêu đến Microsoft.NETCore.App 1.1.2. Tôi đã tạo một dự án thử nghiệm để kiểm tra dự án đó nhưng khi xây dựng, tôi nhận thấy cảnh báo này: nhập mô tả hình ảnh ở đây

Tôi mở Trình quản lý gói NuGet và thấy cảnh báo đó là chính xác, dự án đang được thử nghiệm có phiên bản Microsoft.NETCore khác. nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Vấn đề của tôi là Visual Studio không cho phép tôi cập nhật phiên bản đó, vì vậy tôi bối rối về cách giải quyết vấn đề này: nhập mô tả hình ảnh ở đây Lý tưởng nhất là tôi chỉ cần nhấp vào menu thả xuống và chọn phiên bản phù hợp nhưng Visual Studio tuyên bố rằng nó không thể thực hiện điều này vì " các ràng buộc bổ sung trong dự án hoặc các package.config ”. Tôi phải cập nhật gói đó như thế nào? Visual Studio đề cập đến "ràng buộc bổ sung" nào?


Có vẻ như dự án thử nghiệm đang chặn việc hạ cấp. Bạn đã thử nhấp chuột phải vào giải pháp và chọn quản lý gói nuget cho giải pháp và chuyển tất cả các dự án sang phiên bản khác cùng một lúc?
Ken Tucker,

Tôi đã không nghĩ đến điều đó nhưng tôi chỉ thử nó và tôi gặp lỗi "Bị chặn bởi dự án" tương tự. Ngoài ra, dự án khác bị chặn không cho di chuyển từ 1.1.2. Tôi cũng đã cài đặt bản cập nhật mới nhất cho VS nhưng điều đó không giúp được gì.
riqitang


Tôi đã thu thập tất cả thông tin tôi tìm thấy trong câu hỏi / câu trả lời này: stackoverflow.com/questions/52518059/… vì vấn đề này có vẻ thực sự là một câu hỏi. Các câu trả lời ở đây không hoàn chỉnh cho kịch bản của tôi
Joshit

Gặp lỗi tương tự khi tôi nhắm mục tiêu nhầm các phiên bản khác nhau của khung lõi .net trên các dự án khác nhau trong giải pháp của mình. Đảm bảo các thuộc tính của dự án cho mỗi mục tiêu cùng một phiên bản.
obaylis

Câu trả lời:


51

CHỈNH SỬA 2018 : Chỉ làm theo hướng dẫn cập nhật gói nếu bạn thực sự biết mình đang làm gì. Trong hầu hết các trường hợp, bạn không bao giờ cần cập nhật gói này - hoặc các gói khác được đánh dấu là "bị chặn bởi dự án" - theo cách thủ công. Một ứng dụng phụ thuộc vào khuôn khổ sẽ sử dụng thời gian chạy mới nhất hiện có và một ứng dụng độc lập sẽ tự động thực hiện xây dựng thêm bằng cách sử dụng phiên bản mới hơn của gói này. (có một số trường hợp khó mà bạn cần nâng cấp gói này trong các dự án thử nghiệm. Trong trường hợp này, hãy thêm <TargetLatestRuntimePatch>true</…>xem phần Hỏi & Đáp này để biết các tùy chọn khác)

Tham chiếu gói ngầm định mà thông tin Microsoft.NET.Sdkkhông thể được cập nhật qua NuGet.

Nếu bạn đã di chuyển từ project.json, thì dự án có 1.1.0tham chiếu có thể chứa

<RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion>

trong tệp csproj hoặc một mục như thế này (nếu trước đây bạn có thể sử dụng trình quản lý gói để đặt phiên bản):

<PackageReference Update="Microsoft.NETCore.App" Version="1.1.0" />

Xóa các mục như trên và tất cả các gói sẽ tự động tham chiếu 1.1.2(hoặc bất kỳ thứ gì mà SDK đã cài đặt coi là mới nhất). Alernaly, đặt RuntimeFrameworkVersiontrong tất cả các dự án.


2
Bạn đã đúng: Tôi đã mở tệp .csproj và xóa <RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion>dòng. VS vẫn sẽ không cho phép tôi tự thay đổi phiên bản nhưng ít nhất nó là phiên bản ngay bây giờ (nó cập nhật để 1.1.2 như bạn nói nó sẽ)
riqitang

48

Tôi đã gặp sự cố tương tự khi cố cài đặt gói Entityframework.Core trong ứng dụng Web .NET Core 2. Để giải quyết vấn đề, tôi đã buộc cài đặt thông qua Bảng điều khiển Trình quản lý Gói:

Install-Package Microsoft.NETCore.App -Version 2.0.5

(2.0.5 là phiên bản mới nhất vào thời điểm đó)

Tôi hy vọng nó hữu ích. Sự thanh bình.


7
Điều này đã làm việc để tôi nâng cấp lên 2.1.1 -> Câu trả lời tuyệt vời và bị thiếu trong tất cả các bài báo tôi có thể tìm thấy.
Paul

Điều này cuối cùng cũng làm việc cho tôi. Sau khi gọi này trong pmc của VS2017 cho từng dự án tôi nâng cấp lên v2.1.3 từ v2.1.0
Paul Meems

1
Gói cài đặt Microsoft.NETCore.App
Dorathoto

5
Tại sao nó lại 'bị chặn bởi dự án'? Đây là một số loại lỗi hay có một lý do chính đáng? nếu có một lý do chính đáng có lẽ làm những điều trên không phải là một ý kiến ​​hay? Hay nó khắc phục sự cố đã nói?
niico

Cảm ơn cho gợi ý này. Vì vậy, "Bị chặn bởi dự án" hóa ra là "Bị chặn bởi VS NuGet GUI".
Grimm

19

Cho tôi thêm

<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>

đã lừa

<PropertyGroup>
  <TargetFramework>netcoreapp2.1</TargetFramework>
  <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
</PropertyGroup>

Vì vậy, điều này sẽ nhắm mục tiêu phiên bản mới nhất của khung trên máy hiện tại. Nếu máy tính cục bộ được vá và máy chủ lưu trữ thì điều này có gặp sự cố không?
jonmeyer

Tôi thực sự không biết vì chúng tôi đang triển khai khép kín. Nhưng như một dự đoán hoang dã mà tôi sẽ tưởng tượng vì nó nói "mới nhất" và không có phiên bản cụ thể nào mà nó sẽ không sử dụng bất kỳ nếu không có. @jonmeyer
gsharp

Tôi đã cài đặt các phiên bản khác nhau trong giải pháp của mình. Tôi đã chỉnh sửa tất cả chúng để thêm dòng này. Đưa chúng về cùng một phiên bản và sau đó lại xóa dòng. Nhưng tôi vẫn nhận được thông báo bị chặn bởi dự án khi tôi quản lý các gói nuget cho giải pháp.
sam

@sam bạn cũng đã thử các giải pháp khác chưa? có vẻ như hai câu trả lời với hơn 30 phiếu bầu cũng phù hợp với một số người.
gsharp

Vâng. Tôi đã làm. Những gì tôi đang cố gắng làm là sử dụng các gói nuget quản lý cho tùy chọn giải pháp trong giao diện người dùng và cài đặt / gỡ cài đặt bằng cách nhấp chuột. Không phải chỉnh sửa các tệp csproj theo cách thủ công. Và tôi đã không thể làm điều đó bằng giao diện người dùng. Cách của bạn và các tùy chọn khác hoạt động, nhưng giao diện người dùng không hoạt động.
sam

7

Câu trả lời ngắn

Thêm phiên bản rõ ràng vào Microsoft.AspNetCore.Apptham chiếu gói trong tệp .csproj của bạn.

Câu trả lời dài

Tôi đã có một dự án netcoreapp2.1 hoàn toàn mới. Sau đây là trong tệp .csproj. Lưu ý rằng không có phiên bản nào được liên kết với Microsoft.AspNetCore.Apptham chiếu gói.

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

Tôi đã thêm một tham chiếu rõ ràng vào Microsoft.Extensions.Logging.Abstractionsgói để giải quyết lỗi phụ thuộc không khớp (lỗi xây dựng). Micorsoft.AspNetCore.Appmuốn phiên bản 2.1.0 của sự phụ thuộc này, nhưng gói khác muốn phiên bản 2.1.1. Tệp .csproj của tôi bây giờ trông như thế này.

<ItemGroup>
  ...
  <PackageReference Include="Microsoft.AspNetCore.App" />
  <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.1.1" />
  ...
</ItemGroup>

Điều này làm giảm lỗi xây dựng thành cảnh báo về việc Micorsoft.AspNetCore.Appyêu cầu phiên bản 2.1.0 của Microsoft.Extensions.Logging.Abstractionsgói nhưng tất nhiên phiên bản 2.1.1 đã được giải quyết.

Cố gắng cập nhật Micorsoft.AspNetCore.Applên phiên bản 2.1.1 để khắc phục cảnh báo đã bị chặn bởi Trình quản lý gói như OP đã đề cập.

Tôi đã cập nhật Micorsoft.AspNetCore.Apptham chiếu gói của mình để sử dụng rõ ràng phiên bản 2.1.1 như thế này.

<ItemGroup>
  ...
  <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1" />
  <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.1.1" />
  ...
</ItemGroup>

Điều này đã khắc phục cảnh báo bản dựng và bỏ chặn tất cả các phiên bản Microsoft.AspNetCore.Apptrong Trình quản lý gói. Tôi thậm chí đã có thể xóa tham chiếu rõ ràng đến Microsoft.Extensions.Logging.Abstractionsmà không giới thiệu lại lỗi ban đầu. .Csproj cuối cùng trông như thế này mà không có vấn đề gì.

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

3

Tôi đã gặp vấn đề tương tự và tôi nghĩ, vấn đề là về gói.

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

Sự cố đã được giải quyết sau khi tôi chỉ định chính xác phiên bản.

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

Như tôi biết, lỗi đó đã xảy ra khi số phiên bản


2

Một giải pháp khả thi khác. Trong csprojtệp, hãy cập nhật khung đích lên phiên bản bạn muốn nâng cấp lên. Sau khi thực hiện thay đổi, theo các đoạn mã dưới đây, các gói có thể được nâng cấp thông qua trình quản lý gói NuGet giải pháp.

Trước:

<PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>

Sau:

<PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>

0

Tôi đã giải quyết nó bằng cách đơn giản: Nhấp chuột phải vào Dự án (hoặc ALT + Enter) -> Thuộc tính -> Ứng dụng -> Khung mục tiêu (Chọn khung công tác .NET Core (trong trường hợp này là 1.1))


0

Khuyến nghị tốt nhất là tạo lại các dự án của bạn sau khi nâng cấp SDK và thời gian chạy, sau đó bỏ mã và cấu hình cũ của bạn vào bên trong các dự án mới. Ngoài ra, bạn sẽ mất quá nhiều thời gian vào các chỉnh sửa vô ích và cấu hình không xác định.

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.