Visual Studio 2017, Microsoft.NETCore.App paketini güncelleyemiyor ("Proje tarafından engellendi")


82

Microsoft.NETCore.App 1.1.2'yi hedefleyen bir dotnet çekirdek uygulamam var. Bu projeye karşı test etmek için bir test projesi oluşturdum ancak inşa ederken şu uyarıyı fark ettim: görüntü açıklamasını buraya girin

NuGet Paket Yöneticisini açıyorum ve uyarının doğru olduğunu görüyorum, test edilmekte olan projenin farklı bir Microsoft.NETCore sürümü var. görüntü açıklamasını buraya girin görüntü açıklamasını buraya girin

Benim sorunum, Visual Studio'nun bu sürümü güncellememe izin vermemesi, bu yüzden bu sorunu nasıl çözeceğim konusunda kafam karıştı: görüntü açıklamasını buraya girin İdeal olarak, sadece açılır menüye tıklayıp doğru sürümü seçerdim, ancak Visual Studio, " proje veya packages.config'deki ek kısıtlamalar ". Bu paketi nasıl güncellemem gerekiyor? Visual Studio hangi "ek kısıtlamalar" dan bahsediyor?


Görünüşe göre test projesi eski sürüme geçmeyi engelliyor. Çözüme sağ tıklayıp çözüm için nuget paketlerini yönetmeyi seçip tüm projeleri aynı anda farklı sürüme taşımayı denediniz mi?
Ken Tucker

Bunu düşünmemiştim ama sadece denedim ve aynı "Proje tarafından engellendi" hatasını alıyorum. Ayrıca diğer projenin 1.1.2'den uzaklaşması engellenmiştir. VS için en son güncellemeyi de yükledim ama bu yardımcı olmadı.
riqitang


Bu soruda / yanıtta bulduğum tüm bilgileri topladım: stackoverflow.com/questions/52518059/… çünkü bu sorun gerçekten bir soru gibi görünüyor. Buradaki cevaplar senaryom için tam değil
Joshit

Çözümümdeki farklı projelerde yanlışlıkla .net çekirdek çerçevesinin farklı sürümlerini hedeflerken aynı hatayı aldım. Her bir proje özelliklerinin aynı sürümü hedeflediğinden emin olun.
obaylis

Yanıtlar:


51

DÜZENLEME 2018 : Yalnızca ne yaptığınızı gerçekten biliyorsanız paketi güncelleme talimatlarını izleyin. Çoğu durumda, bu paketi - veya "proje tarafından engellendi" olarak işaretlenen diğer paketleri - manuel olarak güncellemeniz gerekmez. Çerçeveye bağımlı bir uygulama, mevcut en son çalışma zamanını kullanır ve bağımsız bir uygulama, bu paketin daha yeni bir sürümünü kullanarak otomatik olarak ekstra bir derleme gerçekleştirir. (Bu paketi test projelerinde yükseltmeniz gereken bazı uç durumlar vardır. Bu durumda, diğer seçenekler için bu Soru-Cevap bölümünü ekleyin <TargetLatestRuntimePatch>true</…>ve görün )

Örtük paket, Microsoft.NET.Sdkinfers'ın NuGet aracılığıyla güncellenemeyeceğini belirtir .

Project.json'dan geçiş yaptıysanız, 1.1.0referansa sahip proje muhtemelen şunları içerir:

<RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion>

csproj dosyasında veya bunun gibi bir öğede (sürümü ayarlamak için paket yöneticisini önceden kullandıysanız):

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

Yukarıdakine benzer girişleri silin ve tüm paketler 1.1.2otomatik olarak referans alacaktır (veya kurulu SDK'nın en son kabul ettiği şey). Dikkatli bir şekilde, RuntimeFrameworkVersiontüm projelerde ayarlayın .


2
Haklıydınız: .csproj dosyasını açtım ve <RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion>satırı kaldırdım . VS hala sürümü manuel olarak değiştirmeme izin vermiyor ama en azından şu anda doğru sürüm (söylediğin gibi
1.1.2'ye

48

Entityframework.Core paketini bir .NET Core 2 Web uygulamasına yüklemeye çalışırken benzer bir sorun yaşadım. Sorunu çözmek için, Paket Yöneticisi Konsolu aracılığıyla yüklemeyi zorunlu kıldım:

Install-Package Microsoft.NETCore.App -Version 2.0.5

(2.0.5 o zamanki en yeni sürümdü)

Umarım yararlıdır. Barış.


7
Bu, 2.1.1'e yükseltme yapmam için çalıştı -> Harika yanıt ve bulabildiğim tüm makalelerde eksik.
Paul

Bu nihayet benim için de çalıştı. Bunu, v2.1.0'dan v2.1.3'e yükselttiğim her proje için VS2017'nin pmc'sinde çağırdıktan sonra
Paul Meems

1
Yükleme Paketi Microsoft.NETCore.App
Dorathoto

5
Yine de neden 'proje tarafından engelleniyor'? Bu bir tür hata mı yoksa iyi bir nedeni mi var? iyi bir neden varsa, belki yukarıdakileri yapmak iyi bir fikir değildir? Yoksa söz konusu sorunu çözüyor mu?
niico

Bu ipucu için teşekkürler. Bu nedenle "Proje tarafından engellendi", "VS NuGet GUI Tarafından Engellendi" olarak çıktı.
Grimm

19

Benim için eklemek

<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>

hile yaptım

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

Dolayısıyla bu, mevcut makinedeki çerçevenin en son sürümünü hedefleyecektir. Yerel bilgisayar yamalıysa ve ana sunucu bu durumda sorun çıkarmaz mı?
jonmeyer

Aslında bilmiyorum çünkü kendi kendine yeten konuşlandırmalar yapıyoruz. Ancak çılgın bir tahmin olarak, "en son" yazdığından ve mevcut olmasa hiçbirini kullanmayacağına dair belirli bir sürüm olmadığını hayal ediyorum. @jonmeyer
gsharp

Çözümüme farklı sürümler yükledim. Bu satırı eklemek için hepsini düzenledim. Onları aynı sürüme getirip satırı tekrar sildi. Ancak çözüm için nuget paketlerini yönettiğimde yine de mesajın proje tarafından engellendiğini alıyorum.
sam

@sam diğer çözümleri de denediniz mi? Görünüşe göre 30+ oyu olan iki cevap da bazı insanlar için işe yarıyor.
gsharp

Evet. Yaptım. Yapmaya çalıştığım şey, kullanıcı arayüzündeki çözüm için nuget paketlerini yönet seçeneğini kullanmak ve fare tıklamaları kullanarak kurmak / kaldırmaktır. Csproj dosyalarını manuel olarak düzenlemek zorunda değilsiniz. Ve bunu kullanıcı arayüzünü kullanarak yapamadım. Sizin yönteminiz ve diğer seçenekler işe yarıyor, ancak kullanıcı arayüzü çalışmıyor.
sam

7

Kısa cevap

Microsoft.AspNetCore.App.Csproj dosyanızdaki paket referansına açık bir sürüm ekleyin .

Uzun cevap

Yepyeni bir netcoreapp2.1 projem vardı. Aşağıdakiler .csproj dosyasındaydı. Microsoft.AspNetCore.AppPaket referansıyla ilişkilendirilmiş bir sürüm olmadığını unutmayın .

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

Microsoft.Extensions.Logging.AbstractionsBir bağımlılık uyuşmazlığını (derleme hatası) çözmek için pakete açık bir başvuru ekledim . Micorsoft.AspNetCore.Appbu bağımlılığın 2.1.0 sürümünü istedi, ancak başka bir paket 2.1.1 sürümünü istedi. .Csproj dosyam şimdi böyle görünüyordu.

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

Bu, yapı hatasını Micorsoft.AspNetCore.App, 2.1.0 sürümünün gerekli olmasıyla ilgili bir uyarıya indirdi .Microsoft.Extensions.Logging.Abstractions paketin ancak 2.1.1 sürümü elbette çözüldü.

Güncellemeye çalışıyorum Micorsoft.AspNetCore.AppUyarıyı düzeltmek için 2.1.1 sürümüne , OP'de belirtildiği gibi Paket Yöneticisi tarafından engellendi.

Micorsoft.AspNetCore.App2.1.1 sürümünü açıkça bunun gibi kullanmak için paket referansımı güncelledim .

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

Bu, derleme uyarısını düzeltti ve Microsoft.AspNetCore.AppPaket Yöneticisi'ndeki tüm sürümlerin engelini kaldırdı . Microsoft.Extensions.Logging.AbstractionsOrijinal hatayı yeniden tanıtmadan açık referansı bile kaldırabildim . Son .csproj sorunu olmadan böyle görünüyordu.

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

3

Benim de aynı problemim vardı ve sanırım sorun paketle ilgili.

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

Versiyonu tam olarak belirledikten sonra sorun çözüldü.

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

Bildiğim gibi, bu hata sürüm numarası olduğunda ortaya çıkıyor


2

Başka bir olası çözüm. İçindecsproj dosya size yükseltmek isteyen sürümüne hedef çerçevesini güncelleyin. Değişikliği yaptıktan sonra, aşağıdaki kod parçacıkları uyarınca, paketler çözüm NuGet paket yöneticisi aracılığıyla yükseltilebilir.

Önce:

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

Sonra:

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

0

Bunu basitçe şu şekilde çözdüm: Proje'ye sağ tıklayarak (veya ALT + Enter) -> Özellikler -> Uygulama -> Hedef Çerçeve (.NET Core çerçevesini seçin (bu durumda 1.1))


0

En iyi öneri, SDK'yı ve çalışma süresini yükselttikten sonra projelerinizi yeniden oluşturmak ve ardından eski kodunuzu ve yapılandırmanızı yeni projelerin içine bırakmaktır. Bunun dışında, gereksiz ayarlamalar ve bilinmeyen konfigürasyonlarda çok fazla zaman harcayacaksınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.