Soru 'Nesne' tipi başvurulan bir derlemede tanımlanır (NET Standard 2.0 / .NET Framework 4.6.1)


Kullanıyorum .NET Standard 2.0 Sınıf Kitaplıklarımın dayandığı önizleme.

Birkaç NuGet paketi ile ilgili sorun yaşadıktan sonra, özellikle arşiv çıkarımı ile ilgili olarak, .NET Core 2.0 Konsolu projelerimi .NET Framework 4.6.1'e geri taşımaya karar verdim.

.NET Framework 4.6.1'in, .NET Standard 2.0 belirtimini farklı kaynaklara göre gerçekleştirmesi bekleniyor. Özellikle de dotnet / standart GitHub Repo.

Net Standard Implementation by Net Framework and Core

Ne yazık ki, .NET Framework'e geçiş, .NET Framework Console projelerinin tamamı boyunca aşağıdaki hata bildirimlerine neden oldu:

Hata CS0012 'Nesne' tipi, başvurulan bir derlemede tanımlanmıştır. 'Netstandard, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = cc7b13ffcd2ddd51' derlemesine bir başvuru eklemelisiniz.

Nerede Object herşey olabilir: Enum, Task...

.NET Standard 2.0 sınıf kitaplıklarını .NET Framework (4.6.1) ile bu tür hatalara yol açmadan nasıl referans gösterebilirim?


18
2018-06-20 11:58


Menşei




Cevaplar:


En son 2.0 ve VS 15.3'ü kullandıktan sonra bile bu problemi yaşadım. Ancak, benim sorunumun farklı olduğunu düşünüyorum. Core 1.1'den 2.0'a yükseltme yaptıktan sonra .web'in .csproj'u vardı. <RuntimeFrameworkVersion>1.1.2</RuntimeFrameworkVersion>. Hangi projenin doğru 2.0 sürümünü hedeflemesini engelledi.

Sınıf kütüphanelerim (.Layer) projelerim vardı <NetStandardImplicitPackageVersion>1.6.1</NetStandardImplicitPackageVersion>.

İkisini de sildim ve projem en sonunda 2.0 kullanmaya başladı ve her şey yolunda gitti.


20
2017-08-21 08:39



Aynı şüphe vardı RuntimeFrameworkVersionkaldırdıktan sonra hatalar gitti - tutok
Doğru, çok benzer bir problemim vardı. Kullandım bu eğitim projemi 1.1'den 2.0'a taşıdığım için, OP'nin bildirdiği gibi aynı hata iletilerinden oluşan bir grupla derlenemedi. Sonunda değiştirmek zorundaydım RuntimeFrameworkVersion 1.6.1'den 2.0'a ve problem çözüldü. Bu düğümü silmediğimi unutmayın. - Hudgi
@Hudgi, silmeden sizin için çalıştığına sevindim. Ancak, bence, projenizde 2.0 kullanmak istediğinizi söylüyorsunuz. Yani, eğer bunu güncellemeniz gerekiyorsa ... 2.1 de, aynı problemle karşılaşabilirsiniz. RuntimeFrameworkVersion öğesini silerseniz, .Core mevcut en son sürümü kullanacağına inanıyorum. - FerX32


NET Core 2.0 önizleme 2'yi yükledikten ve Visual Studio 2017 Önizleme'nin (15.3) en son sürümüne güncelledikten sonra, referanslar otomatik olarak yüklenir.

Buna göre GitHub sorunuBenzer bir sorunla uğraşırken, el ile bir referans eklemek zorundasınız. NETStandard.Library.NETFramework .NET Framework projenizdeki paket şimdilik*.

Ya NuGet Konsolundan yükleyin:

Install-Package NETStandard.Library.NETFramework -Version 2.0.0-preview1-25305-02 -Pre

Birkaç gün önce, .NET Core / Standard 2.0 önizleme 2 güncellendi, eğer güncellendiyseniz, aşağıdaki sürüme gerek duyulur:

Install-Package NETStandard.Library.NETFramework -Version 2.0.0-preview2-25405-01 -Pre

veya NuGet mağazası aracılığıyla (check Yayın öncesi sürümlerini göster) ve aramak NETStandard.Library.NETFramework

Bu daha sonra referansları çözecek, hatalar kaybolacaktır.

*Joperezr Microsoft'un bir aracı daha sonra ele almasına izin vermeyi planladığını belirtiyor.

Şimdilik rahatsız edici olabilecek bu pakete el ile bir başvuru eklemelisiniz, ancak gelecekte bu işi sizin için yapmayı planlıyoruz.


8
2018-06-20 11:58



Bilmiyorum, bu problemi olan tek kişi ben miyim, bu yüzden bunu paylaşacağımı düşündüm. Kendi kendine cevaplama - jAC
Bu, sonraki önizleme2 sürümünde ve gerekli mantığı içeren bir VS 15.3 önizleme güncellemesinde düzeltilmeli, artık bu nuget paketini gerektirmiyor - Martin Ullrich
@MartinUllrich: Tamam, bilgi için teşekkürler. Sonra benim cevabım (neredeyse / zaten) modası geçmiş ... VS önizlemesinin yeni sürümü kadar soruyu açık tutacağım ve sonra silin. - jAC
Anlayabildiğim kadarıyla, Visual Studio yüklü olmayan bir CI sunucusunda bu hala gereklidir. - Taylor Buchanan
@TaylorBuchanan Yorumunuz günümü kurtardı. - AxelWass


Sadece bazı kişiler hala bu sorunu benim gibi yaşıyorsa

Görsel stüdyosu 2017 sürümünüzü> 15.3'e (yardım menüsündeki en üstteki menüden kontrol edin-> bölümüne bakın), 15.2 sürümüne sahiptim ve bu hatayı görüyordum, burada bulduğum her şeyi yaptım ya da github'umu yaptım ama sorunumu çözmedim. Daha sonra güncellenen görsel stüdyo sürümü ve düzeltildi.


2
2017-10-12 05:17





CI gibi Jenkins için MSBuild kullanıyorsanız, derleme araçlarını güncelleyin. https://www.visualstudio.com/downloads/#build-tools-for-visual-studio-2017) ve ".NET Core derleme araçları" nın işaretlendiğinden emin olun.

Referans: https://github.com/dotnet/standard/issues/458


0
2017-11-30 19:36





Kullanırken kullandığım test projesinde bu sorunu yaşadım TestServer MVC görüşlerimi test etmek için.

Test projesi, web projesi ve ilgili kütüphaneler hepsi netcoreapp2.0.

Vs2017'den 15.5'e yükseltmek işe yaramadı ve test .csproj'umu aşağıdaki önerilen düzeltmelerle düzenledim:

<RestoreProjectStyle>PackageReference</RestoreProjectStyle>

<ItemGroup><Reference Include="netstandard" /></ItemGroup>

<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>

Göre https://github.com/aspnet/Razor/issues/1212#issuecomment-297885722 Ancak, bu çalıştı:

  <Target Name="CopyDepsFiles" AfterTargets="Build" Condition="'$(TargetFramework)'!=''">
    <ItemGroup>
      <DepsFilePaths Include="$([System.IO.Path]::ChangeExtension('%(_ResolvedProjectReferencePaths.FullPath)', '.deps.json'))" />
    </ItemGroup>    
    <Copy SourceFiles="%(DepsFilePaths.FullPath)" DestinationFolder="$(OutputPath)" Condition="Exists('%(DepsFilePaths.FullPath)')" />
  </Target>

0
2017-12-07 03:30