Çeşitli platformları hedefleyen yeniden kullanılabilir bir kitaplık oluşturuyorum (.NET 4.0, .NET 4.5, .NETStandard 1.0 ve .NETStandard 1.3). Bu projenin .NET 4.5 sürümü, .NET 4.0 sürümünde bulunmayan bazı özellikler içerir.Visual Studio 2015 xproject (project.json), bağlı bir projenin en yüksek çerçevesine başvuruda bulunmasına nasıl izin verilir
Bu kitaplık projesine başvuran birim sınama projesinin tek bir hedef platformu vardır, yani NET 4.5.1. Bu test projesi, temel kütüphanenin .NET 4.5'in belirli özelliklerini test eden bazı kodları açıkça içermektedir.
Ne yazık ki, Visual Studio'nun açıkçası bu özelliği içermeyen .NETStandard 1.0 sürümüne başvurduğu için test projesi derlenmiyor.
sorunumu göstermek için, aşağıdaki iki projeye bu azaltılmış:
Çekirdek kütüphane:
{
"version": "1.0.0-*",
"frameworks": {
"netstandard1.0": {
"dependencies": {
"NETStandard.Library": "1.6.0"
}
},
"net40": {},
"net45": {}
}
}
Kod dosyası:
namespace CoreLibrary
{
#if NETSTANDARD1_0
public class ClassNetStandard { }
#endif
#if NET40
public class ClassNet40 { }
#endif
#if NET45
public class ClassNet45 { }
#endif
}
Testi kitaplığı:
{
"version": "1.0.0-*",
"dependencies": {
"CoreLibrary": { "target": "project" }
},
"frameworks": {
"net451": {}
}
}
Kodu:
// This compiles
new CoreLibrary.ClassNetStandard();
// This doesn't.
// error: Type or namespace 'ClassNet40' does not exist in namespace 'CoreLibrary'
new CoreLibrary.ClassNet40();
// error: Type or namespace 'ClassNet45' does not exist in namespace 'CoreLibrary'
new CoreLibrary.ClassNet45();
Ne benim birim test proje derlemek ve belirli .NET 4.5 özellikleri test için izin değiştireyim?
Benim durumumda (sağladığınız iki projeyle), Test kütüphanesi aslında "yeni CoreLibrary.ClassNet45();" ile derler. deyim ve _not_ "new CoreLibrary.ClassNetStandard();" ile derler. Yani, beklediğiniz gibi. Durumunda ClassNet45 ile gerçekten çalışmadığından emin misin? Çünkü Visual Studio'da "hatalar" penceresinde hatalar olduğunu, ancak yine de gerçekten başarılı bir şekilde derlediğini gösterebilir. – Evk
@Evk: Haklısınız. Hem IDE hem de Hata Listesi bir hata göstermesine rağmen, derleme bin \ Debug \ net451 klasörüne derlenir. Bu meclisi Resharper ile inceledikten sonra işe yarıyor. Sonuç: Visual Studio Tooling berbat. – Steven
VS 2015 için .NET Core araçlarının en son sürümünü buradan yüklemeyi deneyin: https://www.microsoft.com/net/core#windowsvs2015. Bu aslında benim için bunu çözdü (artık sahte hata yok). – Evk