C# Conditional compilation ile Win32 ve WinRT nasıl ayrılabilir?

Katılım
26 Temmuz 2023
Mesajlar
4.717
Makaleler
27
Çözümler
180
Yer
Başkent
Daha fazla  
Sistem Özellikleri
HP Victus 16 S1035NT
Cinsiyet
Erkek
Meslek
Yazılımcı/Yayıncı
Selamlar. Bugün biraz internette zor bulunan ve makalesinden de tam emin olamadığım bir konuyla geldim. Amacım şu:
Sadece WinRT'ye özel bir kod bloğunu WinForms, WPF vb. teknolojilerin kullanımına kapatmak. Bunun için de en safe yöntem Conditional compilation olduğunu düşünüyorum. Yâni direkt otomatik algılayıp compile sırasında o kısmı build etmeyecek. WinRT #if'i tek başına işe yaramıyor. Bunu da nasıl 4/4'lük yapabileceğimi bulamadım.
Örnek olarak şöyle açıklayayım:
Kod:
#if WinRT
public static void ForWinRT()
{
    /// blabla
}
/// Buna Cond Comp gerek yok çünkü Win32'de olan
/// Her şey WinUI'da da var. Ama yine de:
#if Win32
public static void ForWin32()
{
    /// blabla
}
Kodda bu şekilde kullanıyoruz ama .csproj'a da:
Kod:
<--! Örneğin: -->
<PropertyGroup Condition="'$(TargetFramework)'=='net9.0-windows'">
    <DefineConstants>$(DefineConstants);WIN32</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)'=='net9.0-windows10.0.19043.0'">
    <DefineConstants>$(DefineConstants);WINRT</DefineConstants>
</PropertyGroup>
Tarzında eklenmesi gerekiyor ama sadece Framework vb. gibi değil de X NuGet'i yüklüyse nasıl yapabiliriz tam anlayamadım. Mesela WinUI'da kullanılan NuGet'lar:
1762157609163.png

Bunları da algılayabilmesi için cond ekleyebiliyoruz sanırım.

@bitwise @TheAny yardımcı olabilir misiniz bu konuda bilginiz varsa?
 
Sifir malesef, windows API'ina dokunmayali 10 sene oldu.
Aslında API'den çok yeni nesil C# esnekliği diyebiliriz. Ya da ben yeni öğrendim. # sembolünün C++++'da çok güçlü bir karşılığı var.
 

Technopat Haberler

Geri
Yukarı