Rehber Visual Studio 2022 program meta veri ayarı, DPI ayarı ve app.manifest dosyası kullanımı

Merhaba 😇

Bugün sizlere Visual Studio 2022 ile (2019 ve 2017' de olur, fark etmez) Yazdığınız programın meta veri ayarını, DPI ayarını ve app.manifest dosyası kullanmayı göstereceğim.

Yazımız 3 ana maddeden oluşuyor;
  • Program Meta Veri Ayarı.
  • Program DPI Ayarı.
  • app.manifest dosyası kullanımı.

Öncelike Program Meta Veri Ayarı nedir?

Program meta veri ayarı
, yazdığınız bir programın sürümünü, telif hakkını, ilgili içerik bilgisini, arayüz dilini gibi temel ayarları kontrol ettiğimiz alandır.

Şimdi hemen bir Form oluşturalım ve işlemlere başlayalım;

Not: Form, Console veya DLL Kitaplığı fark etmez. Hepsinde aynı ayarlar neredeyse geçerlidir.

1677678385655.png


Form'umuz oluştu.


1677678431348.png


Programın meta ayarlarını yapmak için Çözüm Gezgini üzerinden Properties sekmesine çift tıklıyoruz.

1677678470610.png


Önümüze böyle bir sayfa açılıyor.

1677678483149.png



Şimdi gelelim detaylandırmaya;

Properties paneli 12 menüden oluşuyor.

  • Uygulama.
  • Derleme.
  • Derleme Olayları.
  • Hata Ayıkla.
  • Kaynaklar.
  • Hizmetler.
  • Ayarlar.
  • Başvuru Yolları.
  • İmzalama.
  • Güvenlik.
  • Yayımlama.
  • Code Analysis.
Uygulama menüsü;

1677678602877.png



Bu alan program temel bilgilerinin yer aldığı alandır.

Sırasıyla başlayalım;

  • Bütünleştirilmiş Kod bilgisi: Bu *.exe veya *.dll progamın ismini ayarladığımız kısımdır. Proje ismi olarak gelir varsayılan. Bunu değiştirebilirsiniz.
  • Varsayılan Alan Adı: Bunu değiştirmenizi önermem, bu değiştirildiği zaman projeniz bozulabilir. O yüzden proje oluştururken mutlaka düzgün bir isim koyunuz. Yoksa çok uğraştırır sizi bu kısım.
  • Hedef Framework: Sisteminizde SDK olarak yüklü olan .NET Framework sürümlerinin olduğu bölümüdür. Bu bölümden projenizi oluşturuktan sonra bile .NET Framework sürümünü düşürebilir veya yükseltebilirsiniz (Sürüm değiştiği zaman projeyi yeniden başlat demenizi ister).
  • Çıkış Türü:3 ana bölümden oluşur;
    • Windows Uygulaması: Projeyi GUI, yani grafiksel kullanıcı arayüzü olan bir arayüz ile derleme yapmanızı sağlar.
    • Konsol Uygulaması: Projeyi konsol uygulaması olarak derlemenizi sağlar.
    • Sınıf Kitaplığı: Projeyi DLL olarak derlemenizi sağlar.
  • Otomatik Olarak Bağlama Yeniden Yönlendirmeleri Oluştur: Bu seçenek seçili kalmalı, proje içeriğinden bir ana sınıf değişirse tüm proje içindeki dosyalar üzerinde değişiklik yapmanızı sağlar.
  • Başlangıç Nesnesi: Bu alan programın birden fazla Program.cs dosyası varsa seçmenizi ve o Program.cs dosası üzerinden başlatmanızı sağlar.
  • Kaynaklar bölümü 2 ana bölümden oluşur;
    • Simge: Programın *.exe dosyasının simgesini belirlemek için olan sekmedir. Not: Sadece *.ico uzantılı, yani simge olan dosyalar seçilebilir.
    • Bildirim: Bu alan programın app.manifest dosyasını seçtiğimiz alandır. Birden fazla app.manifest dosyası varsa buradan seçebiliriz. Sonradan bir app.manifest dosyası eklenirse otomatik olarak seçilir burada.

Bütünleştirilmiş Kod Bilgisi Butonu;

Not:
Burada yer alan bilgiler tamamen rehber için oluşturulmuş olup, gerçek kurum/kuruluşlar veya kişiler ile alakası yoktur. Tamamen hayal ürünüdür.

1677679148323.png

  • Başlık: Programın Görev Yöneticisi gibi alanlarda gösterildiği isimdir.
  • Açıklama: Programın açıklamasını yazdığımız alandır. Programın amacını belirtir.
  • Şirket: Bir şirket tarafından geliştirilmişse şirket ismi girilebilir. Eğer şahış şirketi varsa kişinin adı ve soyadını girmesi gerekir.
  • Telif Hakkı: Programı yazan şirket/kişi ismi olmak zorunda değildir. Resmi olarak kimin tarafından telif hakkı ile korunuyorsa onun ismini yazmanız gerekmekte.
  • Ticari Marka: Bulunduğunuz ülke içerisinde resmi bir ticari markanız varsa onu yazmanız gerekmekte.
  • Derleme Sürümü: Projenin derleme sürümünü ayarlamanızı sağlar. Programın özellikleri kısmında buradaki sürüm numarası gözükür.
  • Dosya Sürümü: Programın dosya sürümünü belirler.
  • GUID: Her program oluşturulduğunda benzersiz olara kbir GUID numarası oluşur. Bu her program için farklıdır ve elle değiştirmeyiniz.
  • Nötr Dil: Programın varsayılan olarak hangi dili kullandığınızı ayarladığınız kısımdır.
  • Derlemeyi COM-Visible Yap: Bu seçenek kapalı kalsın, bazı derleme ayarların erişmenizi engelleyebilir.

1677679437471.png


Gördüğünüz üzere programın ismi ve yayıncısı yazmakta. Bu bilgiler bu alanlar doldurularak yapılıyor :)

1677679474848.png


Gördüğünüz üzere programa sağ tıklayıp özellikler deyip ayrıntılar sekmesine girdiğimiz zaman tüm bilgiler buraya geliyor.

Program derleme/yorumlama ayarı;


Derleme menüsü;

Derleme veya yorumlama ayarı olarak 2 tip seçenek vardır;
  • Derleme yöntemi 2 seçenekten oluşur;
    • Debug: Program test etmek açamlı derlenir. Dosya boyutu daha yüksek olur.
    • Release: Program yayınlamak için derlenir. Dosya boyutu daha düşük ve daha iyi derlenmiş olur (Not: Derleme süresi daha uzun sürer).
  • Mimari bölümü 3 bölümden oluşur;
    • x86: 32 bit mimari ile derlenir. Program, 32 Bit çalışır.
    • x64: 64 bit mimari ile derlenir. Program, 64 Bit çalışır.
    • ARM64: ARM işlemciler için uyumlu olacak şekilde derlenir. Program, 64 Bit çalışır.
1677679560253.png



1677679732049.png


Bu alan biraz daha detaylıdır.
  • DEBUG ve TRACE: Debug olarak derleyecekseniz DEBUG, Release olarak derleyecekseniz TRACE seçmeniz gerekir.
  • Platform hedefi: Üst kısımda yer aldığı gibi mimari seçmenizi sağlar.
  • Güvensiz koda izin ver: Program thread veya task kullanıyorsa her türlü uyarı verir. Bu seçeneği seçerseniz uyarı vermez.
  • Kodu iyileştir: Kodu derlerken iyileştirilmiş olarak derler.
  • Uyarı düzeyi: Varsayılan olarak 4 olur. Bu sayı artarsa program en küçük bir yazım hatasında veya algoritma hatasında uyarı verir. Sayıyı düşürseniz kritik konularda uyarı verir sadece.
  • Uyarıları gizle: Her uyarının bir adı varıdr. Buraya istediğiniz uyarların isimlerini girerek gizleyebilirsiniz.
  • Uyarıları hata olarak değerlendir alanı 3 kısımdan oluşur;
    • Hiçbiri: Program uyarı verince hata olarak dönmez.
    • Tümü: Tüm uyarıları hata olarak döndürür.
    • Belirli uyarılar: Kritik önem arz eden uyarları hata olarak döndürür. Veya siz seçebilirsiniz.
  • Çıkış bölümü 5 bölümden oluşur;
  • Çıkış Yolu: Program derlendiği zaman nereye çıktı vereceğini ayarlayabilirsiniz. Bu alan Debug, Release ve mimariye göre otomatik olarak değişir.
  • XML Belge Dosyası: Projenin tüm ayar, bilgi ve diğer bilgileri xml olarak projenin *.exe dosyasının olduğu dizine proje ismi ile xml dosyası oluşturur.
  • COM Birlikte Çalılabilirliği İçin Kaydolun: Uygulama sekmesinde yer alan ayarı açarsanız bu ayara erişebilirsiniz.
  • Seri Duruma Getirme Derlemesi Oluştur: Projenin daha seri çalışması için bir ayardır. Otomatik olarak seçili kalması daha iyidir.
Gelişmiş derleme ayarı;

1677680365750.png


  • Dil sürümü: Uygulama kısmından seçtiğiniz Nötr dil ayarı buraya otomatik olarak işler.
  • İç derleyici hata raporlama kısmı 4 kısımdan oluşur;
    • Hiçbiri: Hata raporlarını göstermez.
    • İstem: Hata raporlarını istemci üzerinden verir. Varsayılan bu seçenektir.
    • Gönder: Hata raporlarını bir alana gönderir.
    • Kuyruk: Hata raporlarını kuyruklar. Programı kapattığın zaman size rapor olarak verir.
  • Çıkış sekmesi 3 kısımdan oluşur;
    • Hata ayıklama bilgileri 5 kısımdan oluşur;
      • Hiçbiri: Programın derlendikten sonra *.exe, *.dll dosyasının oluştuğu kısıma hata ayıklama bilgilerini çıkarmaz.
      • Tam: Programın derlendikten sonra *.exe, *.dll dosyasının oluştuğu kısıma hata ayıklama bilgilerinin detaylı olarak çıkarılmasını sağlar.
      • Yalnızca Pdb: *.pdb uzantılı olarak programın hata ayıklama bilgilerini detaylı bir şekilde çıkarır.
      • Taşınabilir: Programın hata ayıklama bilgilerini okunabilir ve taşınabilir bir şekilde çıkarır.
      • Ekli: Programa ek olarak eklenti gibi hata ayıklama bilgilerini çıkarır.
    • Dosya hizalama: Proje derlenirken hangi boyutlar ile derleneceğini ayarlayabilirsiniz; Ayarları; Varsayılan olarak 512 KB olarak gelir.
      • 512 KB.
      • 1024 KB.
      • 2048 KB.
      • 4096 KB.
      • 8192 KB.
    • Kitaplık Temel Adresi: Projenin sistem tarafından temel (Assembly) kodunu belirler. Değiştirilemez.
Derleme olayları;

Burası, proje derlenmeden önce ve derlendiktan sonra komut satırına eklenecek komuları veya yazıları yazdığımız kısımdır.

1677681015649.png



  • Derleme öncesi olay komut satırı: Proje derlenmeden önce komut satırına istediğiniz bir kodu veya yazıyı yazdırmanızı sağlar.
  • Derleme sonrası olay komut satırı: Proje derlendikten sonra komut satırına istediğiniz bir kodu veya yazıyı yazdırmanızı sağlar.
  • Derleme sonrası olayını çalıştır ayarı 3 kısımdan oluşur; Varsayılan olarak başarıyla derlendiğinde seçilidir.
    • Her zaman: Her çalıştırılığında çalışır.
    • Başarıyla oluşturulduğunda: Proje başarıyla derlenir ve çalıştırılırsa çalışacak şekilde ayarlar.
    • Oluşturma proje çıktısı değiştirildiğinde: Proje kodu değiştirildi anda çalışacak şekilde ayarlar.

Hata Ayıkla menüsü;

Bu alan, yukarıda yer aldığı gibi bazı ayarlar burada da yer alıyor. O yüzden tekrar aynı ayarları yazmayacağım.


1677681222172.png


  • Eylemi Başlat sekmesi 3 kısımdan oluşur;
    • Projeyi Başlat: Program derlendiği anda otomatik olarak projeyi başlatır.
    • Dış Programı Başlat: Proje derlendiği anda dışarıdan gelen programı başlatır.
    • Tarayıcıyı URL ile başlat: Kullandığınız tarayıcıyı bir URL ile başlatmanızı sağlar.
  • Başlatma seçenekleri 4 kısımdan oluşur;
    • Komut Satırı Bağımsız Değişkenleri: Komut satırı üzerinden bağımsız değişken tanımlamak isterseniz bu alanı kullanmanız gerekir.
    • Çalışma Dizini: Programın hangi dizin üzerinden başlatılacağını seçebilirsiniz.
    • Uzak Makine Kullan Seçeneği: Bu seçenek, uzak bir makine kullanmak isterseniz seçebilirsiniz.
    • Kimlik Doğrulama Modu: Bu seçenek, uzak makine kullan seçeneği seçilirse aktif olur. Kimlik doğrualama seçili olsun eğer kullanacaksanız.
  • Hata ayıkalam altyapıları 2 kısımdan oluşur;
    • Yerel Kod Hata Ayıklamasını Etkinleştir: Programın yerel kodlarını üzerinde hata ayıklama yapmak istiyorsanız seçebilirsiniz.
    • SQL Server Hata Ayıklamasını Etkinleştir: Eğer SQL Server kullanıyorsanız, yazdığınız program üzerinde SQL Server hatalarını görmek isterseniz seçebilirsiniz.

Kaynaklar menüsü;

Bu alan, resim, simge, ses, video, yazı vb. içerikleri ekmenize yarayan kısımdır.

Not: Buraya eklediğiniz her şey program üzerinden erişilebilir ve program derlendiği zaman *.exe veya *.dll içerisine gömülür.

1677681561468.png


Kaynak Ekle > Mevcut Dosya ekle diyerek istediğiniz tüm içerikleri ekleyebilirsiniz.

1677681617046.png


Hizmetler menüsü;

Bu alan, ASP.NET kullanan web siteleri üzerinde oturum açıp direkt olarak programın üzerinde giriş yapmanızı sağlayan tekonlojidir.

Örnek: Logitech G HUB gibi.

Not: Sadece oturum açma işlemi yapacaksanız bu seçeneği etkinleştirin.

1677681643896.png



Ayarlar sekmesi;

Bu alan, program içerisinde kullanmak istediğiniz değişkenleri eklediğinzi kısımdır. Mesela tema ve dil ayarı gibi ayarları buradan kontrol edebilir ve değiştirebilirsiniz.

1677681737619.png


Değişkenler bu türleri desteklemektedir.

1677681783223.png

  • Kullanıcı: Programın ayarlarını kullanan herkes değiştirebilmesini istiyorsanız ilgili değişkenin ayarını kullanıcı yapın.
  • Uygulama: Programın ayarlarını sadece programın kendisi değiştirmesini istiyorsanız ilgili değişkenin ayarını Uygulama yapın.
Başvuru Yolları;

Bu sekme, sistem dosyalarını veya sistem kitaplık dosyalarını projeye dahil etmek için kullanılan alandır. Fazla kullanılan bir sekme değildir. Harici modülleri kod ile eklemek daha kolay ve iyidir.

1677681846285.png


İmzalama;

Bu alan, program için dijital imza satın alırsanız ekleyeceğiniz kısımdır.

Dijital imza, programı güvenli gösterir. Satın aldığınız dijital imzayı buradan Dosyadan Seç diyerek seçip, ardından programı derlerseniz programın ayrıntılar sekmesine dijitak imzalar menüsü gelir ve imzalı gözükür.

2 tip imzalama algoritması vardır;
  • SHA1.
  • SHA256.
SHA256 fiyatı ve güvenliği, SHA1'e göre daha fazladır.

Peki bunun faydası nedir?
  • Bu imza bir yazılım içerisinde yer alıyorsa, özellikle kaynak kodu şifrelenince, Anti-Virüs yazılımları yazılımı zararlı sınıfına almaktan kaçınır. Dijital imza yazılımı iyi göstermektedir.
  • Tarayıcılar yazılımı *.exe olarak indirirken indirme tamamlandığında zararlı yazılım veya tehlike içeriyor demez.

1677681894219.png


Güvenlik menüsü;

Bu alan, programın tıklama güveniği ayarı içeriyorsa etkinleştirmeniz gerekir.

Not: Bu ayarı açarsanız projeyi değiştirmenize ve derlemenize izin vermez.

1677682011655.png


Yayımlama menüsü;

Bu alan, programı başka kişilere veya bir topluluğa kullanmak için paylaşacağınız zaman ayarlarını yaptığınız alandır.

1677682072825.png


  • Uygulama Yalnızca Çevrimiçi Kullanılabilir: Program internet bağlantısı olmadan çalışmasına izin vermez.
  • Uygulama Çevrimdışı Olarak Kullanılabilir: Programın internet bağlantısı olmadan çalışmasına izin verir.
  • Yayım Sürümü: Bu alan projeyi yayınlarken sürümünü seçtiğiniz alandır.
  • Şimdi Yayımla Tuşu: Visual Studio bir GitHub Reposuna bağlı ise otomatik olarak o repoya projeyi yükler ve yayımlar.

Code Analysis menüsü;

Bu alan, programın kod üzerinde yaptığı denetim ve kuralları belirler. Varsayılan olarak Microsoft tarafından seçilidir. Ayarı değiştirmenizi önermem.

1677682215639.png



Şimdi gelelim diğer ana maddemize;

DPI Ayarı;

Bunun için app.manifest dosyası eklememiz gerekiyor.

1677682322764.png


Projeye sağ tıklayıp > Ekle > Yeni öğe diyoruz.

1677682355537.png


Ardından, Uygulama Bildirim Dosyası (Yalnızca Windows) seçiyoruz ve ismini değiştirmeden Ekle diyoruz.


1677682403597.png


Önünüze böyle bir dosya gelecek.

app.manifest dosyası 3 alandan oluşur.
  • Başlatma kuralı;
    • Varsayılan olarak asInvoker olarak gelir. Program yönetici iznine ihtiyaç duymadan, o an aktif kullanıcı izinleri ile çalışacak şekilde ayarlanır.
    • highestAvailable: Kullanıcının en yüksek izinleri ile çalışır.
    • requireAdministrator: Adından da anlayacağınız üzere, program başlatılmak için yönetici izni ister. Program logosunun üstünde kalkan işareti oluşur. Bu kalkan yönetici izni istediğini anlamına gelir.
1677682536879.png

  • İşetim sistemi ayarı;
    • Şimdilik Windows 11 yok, ilerleyen zamanlarda eklenecek.
    • Bu alan hangi işletim sistemi ile çalışmasını istiyorsanız yazılımınızın o işletim sistemi SupportedOS ID değerini açmanız yeterli.
    • Hepsini destekliyorsanız hepsini açabilirsiniz.
1677682645830.png

  • DPI Ayarı;
    • Bu alan bu şekilde ayarlanlamı. DPI Aware, yani DPI duyarlı hale getirir yazılımı.
Tabii tek bu yeterli değil. Eğer geliştirdiğiniz yazılım Form ise bir ayar daha yapmanız gerekiyor.


1677682709063.png


Form'a tıklayıp, Özellikler Paneli üzerinden AutoScaleMode ayarını DPI olarak ayarlamanız lazım.


Not:
Bu ayarlar en fazla 1920x1080 monitörler için DPI ayarı yapar. Daha yüksek çözünürlüklü monitörlerde bulanık gözükmesini istemiyorsanız programın alttaki işlemleri yapmanız lazım.

Yüksek DPI Ayarı;


Bu ayar, 1080p, 2K, 4K, 8K, 16K monitörlere kadar destekler. Programınızı Ultra HD gösterir.

Not: Windows Vista ve üzerinde çalışır bu işlem.

Program.cs dosyasını açıyoruz.

Bunun için user32.dll kütüphanesini kullanacağız. user32.dll dosya içerisinde yer alan SetProcessDPIAware() sınıfını kullanacğız.

1677682907053.png



C#:
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace Technopat_Sosyal_Test_Program{
    internal static class Program{
        /// <summary>
        /// Uygulamanın ana girdi noktası.
        /// </summary>
        [STAThread]
        static void Main(){
            if (Environment.OSVersion.Version.Major >= 6) { SetProcessDPIAware(); } // Windows Vista ve üzeri olduğunda çalışır.
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
        [DllImport("user32.dll")]
        private static extern bool SetProcessDPIAware();
    }
}

İşletim sistemi sürüm numaraları;

İşletim SistemiSürüm Numarası
Windows 1110.0*
Windows 1010.0*
Windows Server 202210.0*
Windows Server 201910.0*
Windows Server 201610.0*
Windows 8.16.3*
Windows Server 2012 R26.3*
Windows 86.2
Windows Server 20126.2
Windows 76.1
Windows Server 2008 R26.1
Windows Server 20086.0
Windows Vista6.0
Windows Server 2003 R25.2
Windows Server 20035.2
Windows XP 64-Bit Edition5.2
Windows XP5.1
Windows 20005.0

Gördüğünüz üzere yazılar net gözüküyor.

1677683050353.png



Buraya kadar okuyan herkese teşekkür ederim.

Rehberi hazırlamak 3.5 saatimi aldı.
Yazılım rehberlerimin devamı gelecek.

İyi çalışmalar, kolay gelsin 😎
 
Son düzenleme:

Geri
Yukarı