Eğitim
Modül
C# kullanarak .NET Sınıf Kitaplığı'ndan yöntemleri çağırma - Training
Değerler döndüren, giriş parametrelerini kabul eden ve daha fazlasını yapan yöntemleri çağırarak .NET Sınıf Kitaplığı'ndaki işlevselliği kullanın.
Bu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
Bu öğreticide .NET'te sürüm oluşturmanın ne anlama geldiğini öğreneceksiniz. Ayrıca, kitaplığınızın sürümünü oluştururken ve kitaplığın yeni bir sürümüne yükseltirken göz önünde bulundurmanız gereken faktörleri de öğreneceksiniz.
C# derleyicisi .NET SDK'sının bir parçasıdır. Varsayılan olarak, derleyici projeniz için seçilen TFM ile eşleşen C# dil sürümünü seçer. SDK sürümü seçtiğiniz çerçeveden daha büyükse, derleyici daha büyük bir dil sürümü kullanabilir. Öğesini projenizde ayarlayarak varsayılanı LangVersion
değiştirebilirsiniz. Nasıl yapılacağını derleyici seçenekleriyle ilgili makalemizde öğrenebilirsiniz.
Uyarı
öğesinin LangVersion
olarak latest
ayarlanması önerilmez. ayarı, latest
yüklenen derleyicinin en son sürümünü kullandığı anlamına gelir. Bu, makineden makineye değişerek derlemeleri güvenilir hale getiremez. Buna ek olarak, geçerli SDK'da yer almamış çalışma zamanı veya kitaplık özellikleri gerektirebilecek dil özelliklerini etkinleştirir.
Genel kullanım için .NET kitaplıkları oluşturan bir geliştirici olarak, büyük olasılıkla yeni güncelleştirmeleri kullanıma sunmanız gereken durumlarda bulundunuz. Mevcut kodun kitaplığınızın yeni sürümüne sorunsuz bir şekilde geçirilmesini sağlamak için bu işleme nasıl gittiğiniz çok önemlidir. Yeni bir sürüm oluştururken göz önünde bulundurmanız gereken birkaç şey şunlardır:
Anlamsal sürüm oluşturma (kısaca SemVer), belirli kilometre taşı olaylarını göstermek için kitaplığınızın sürümlerine uygulanan bir adlandırma kuralıdır. İdeal olarak, kitaplığınıza verdiğiniz sürüm bilgileri geliştiricilerin aynı kitaplığın eski sürümlerini kullanan projeleriyle uyumluluğu belirlemesine yardımcı olmalıdır.
SemVer'e en temel yaklaşım, 3 bileşen biçimidir MAJOR.MINOR.PATCH
ve burada:
MAJOR
uyumsuz API değişiklikleri yaptığınızda artırılırMINOR
geriye dönük uyumlu bir şekilde işlev eklediğinizde artırılırPATCH
geriye dönük uyumlu hata düzeltmeleri yaptığınızda artırılırSürüm bilgilerini .NET kitaplığınıza uygularken sürüm öncesi sürümler gibi diğer senaryoları belirtmenin yolları da vardır.
Kitaplığınızın yeni sürümlerini yayımladığınızda, büyük olasılıkla önceki sürümlerle geriye dönük uyumluluk önemli sorunlarınızdan biri olacaktır. Kitaplığınızın yeni bir sürümü, önceki sürüme bağlı kod yeniden derlendiğinde yeni sürümle çalışabiliyorsa, önceki sürümle uyumlu kaynaktır. Kitaplığınızın yeni sürümü, eski sürüme bağımlı olan bir uygulama yeniden derleme olmadan yeni sürümle çalışabilirse ikili uyumludur.
Kitaplığınızın eski sürümleriyle geriye dönük uyumluluğu korumaya çalışırken göz önünde bulundurmanız gereken bazı şeyler şunlardır:
Not
Zorunlu bağımsız değişkenleri isteğe bağlı hale getirmenin özellikle yöntemin davranışını değiştirmemesi durumunda çok az etkisi olmalıdır.
Kullanıcılarınızın kitaplığınızın yeni sürümüne yükseltmesini ne kadar kolay hale getirirseniz, yükseltme olasılığı o kadar artar.
.NET geliştiricisi olarak, çoğu proje türünde mevcut olan dosyayla app.config
karşılaşma olasılığınız çok yüksektir.
Bu basit yapılandırma dosyası, yeni güncelleştirmelerin dağıtımını geliştirmek için uzun bir yol kat edebilir. Kitaplıklarınızı genellikle düzenli olarak değişme olasılığı olan bilgilerin dosyada app.config
depolandığı şekilde tasarlamanız gerekir. Bu şekilde, bu bilgiler güncelleştirildiğinde, kitaplığın yeniden derlenmesine gerek kalmadan eski sürümlerin yapılandırma dosyasının yenisiyle değiştirilmesi gerekir.
Diğer geliştiriciler tarafından oluşturulan .NET kitaplıklarını kullanan bir geliştirici olarak, büyük olasılıkla kitaplığın yeni sürümünün projenizle tam olarak uyumlu olmayabileceğini ve bu değişikliklerle çalışmak için kodunuzu güncelleştirmeniz gerektiğini fark edebilirsiniz.
Şanslısınız ki C# ve .NET ekosistemi, uygulamamızı hataya neden olabilecek yeni kitaplık sürümleriyle çalışacak şekilde kolayca güncelleştirmemize olanak sağlayan özellikler ve tekniklerle birlikte gelir.
Uygulamanızın kullandığı kitaplığın sürümünü güncelleştirmek için app.config dosyasını kullanabilirsiniz. Bağlama yeniden yönlendirmesi olarak adlandırılan özelliği ekleyerek uygulamanızı yeniden derlemek zorunda kalmadan yeni kitaplık sürümünü kullanabilirsiniz. Aşağıdaki örnekte, uygulamanızın app.config dosyasını ilk derlendiği sürüm yerine 1.0.0
düzeltme eki sürümünü ReferencedLibrary
kullanacak 1.0.1
şekilde nasıl güncelleştirdiğiniz gösterilmektedir.
<dependentAssembly>
<assemblyIdentity name="ReferencedLibrary" publicKeyToken="32ab4ba45e0a69a1" culture="en-us" />
<bindingRedirect oldVersion="1.0.0" newVersion="1.0.1" />
</dependentAssembly>
Not
Bu yaklaşım yalnızca yeni sürümü ReferencedLibrary
uygulamanızla uyumlu ikiliyse çalışır.
Uyumluluğu belirlerken dikkat edilmesi gereken değişiklikler için yukarıdaki Geriye Dönük Uyumluluk bölümüne bakın.
Bir temel sınıfın devralınan new
üyelerini gizlemek için değiştiriciyi kullanırsınız. Bu, türetilmiş sınıfların temel sınıflardaki güncelleştirmelere yanıt vermesinin bir yoludur.
Aşağıdaki örneğe göz atın:
public class BaseClass
{
public void MyMethod()
{
Console.WriteLine("A base method");
}
}
public class DerivedClass : BaseClass
{
public new void MyMethod()
{
Console.WriteLine("A derived method");
}
}
public static void Main()
{
BaseClass b = new BaseClass();
DerivedClass d = new DerivedClass();
b.MyMethod();
d.MyMethod();
}
Çıktı
A base method
A derived method
Yukarıdaki örnekten, içinde BaseClass
bulunan yöntemin nasıl DerivedClass
gizlendiğini MyMethod
görebilirsiniz.
Başka bir deyişle, kitaplığın yeni sürümündeki bir temel sınıf türetilmiş sınıfınızda zaten var olan bir üye eklediğinde, temel sınıf üyesini new
gizlemek için türetilmiş sınıf üyenizdeki değiştiriciyi kullanmanız yeterlidir.
new
Değiştirici belirtilmediğinde, türetilmiş bir sınıf varsayılan olarak bir temel sınıfta çakışan üyeleri gizler, ancak derleyici uyarısı oluşturulsa da kod yine de derlenir. Başka bir deyişle, mevcut bir sınıfa yeni üyeler eklemek, kitaplığınızın bu yeni sürümünün hem kaynak hem de ikili sürümüne bağımlı olan kodla uyumlu olmasını sağlar.
Değiştirici, override
türetilmiş bir uygulamanın bir temel sınıf üyesinin uygulamasını gizlemek yerine genişlettiği anlamına gelir. Temel sınıf üyesine değiştiricinin virtual
uygulanmış olması gerekir.
public class MyBaseClass
{
public virtual string MethodOne()
{
return "Method One";
}
}
public class MyDerivedClass : MyBaseClass
{
public override string MethodOne()
{
return "Derived Method One";
}
}
public static void Main()
{
MyBaseClass b = new MyBaseClass();
MyDerivedClass d = new MyDerivedClass();
Console.WriteLine("Base Method One: {0}", b.MethodOne());
Console.WriteLine("Derived Method One: {0}", d.MethodOne());
}
Çıktı
Base Method One: Method One
Derived Method One: Derived Method One
Değiştirici override
derleme zamanında değerlendirilir ve geçersiz kılınacak bir sanal üye bulamazsa derleyici bir hata oluşturur.
Tartışılan teknikler hakkında bilginiz ve bunların hangi durumlarda kullanılacağına ilişkin anlayışınız, kitaplığın sürümleri arasındaki geçişi kolaylaştırmaya yönelik uzun bir yol kat edecektir.
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin:
Eğitim
Modül
C# kullanarak .NET Sınıf Kitaplığı'ndan yöntemleri çağırma - Training
Değerler döndüren, giriş parametrelerini kabul eden ve daha fazlasını yapan yöntemleri çağırarak .NET Sınıf Kitaplığı'ndaki işlevselliği kullanın.