Nasıl yapılır: Derlemeyi tanımlayıcı adla imzalama
Not
.NET Core, tanımlayıcı adlandırılmış derlemeleri desteklese ve .NET Core kitaplığındaki tüm derlemeler imzalanmış olsa da, üçüncü taraf derlemelerin çoğunluğunun kesin adlara ihtiyacı yoktur. Daha fazla bilgi için bkz . GitHub'da Tanımlayıcı Ad İmzalama .
Bir derlemeyi katı bir adla imzalamak için çeşitli yollar vardır:
- Visual Studio'daki bir proje için proje tasarımcısında Güçlü Derleme>adlandırma sayfasını kullanarak. Bu, bir derlemeyi katı bir adla imzalamanın en kolay ve en kullanışlı yoludur.
- Bir .NET Framework kod modülünü (.netmodule dosyası) anahtar dosyasıyla bağlamak için Derleme Bağlayıcısı'nı (Al.exe) kullanarak.
- Katı ad bilgilerini kodunuza eklemek için derleme özniteliklerini kullanarak. Kullanılacak anahtar dosyasının AssemblyKeyFileAttribute AssemblyKeyNameAttribute bulunduğu yere bağlı olarak veya özniteliğini kullanabilirsiniz.
- Derleyici seçeneklerini kullanarak.
Bir derlemeye katı bir ad atamak için bir şifreleme anahtarı çiftiniz olması gerekir. Anahtar çifti oluşturma hakkında daha fazla bilgi için bkz . Nasıl yapılır: Ortak-özel anahtar çifti oluşturma.
Visual Studio kullanarak bir derlemeyi kesin adla oluşturma ve imzalama
- Çözüm Gezgini'da projenin kısayol menüsünü açın ve özellikler'i seçin.
- Derleme sekmesinin altında Bir Güçlü adlandırma düğümü bulacaksınız.
- Seçenekleri genişleten Derlemeyi imzala onay kutusunu seçin.
- Bir Tanımlayıcı ad anahtarı dosya yolu seçmek için Gözat düğmesini seçin.
Not
Derlemeyi imzalamayı geciktirmek için bir ortak anahtar dosyası seçin.
Derleme Bağlayıcısı'nı kullanarak bir derlemeyi tanımlayıcı adla oluşturma ve imzalama
Visual Studio Geliştirici Komut İstemi'ni veya Visual Studio Developer PowerShell'i açın ve aşağıdaki komutu girin:
al /out:<assemblyName moduleName>>< /keyfile:<keyfileName >
Where:
- assemblyName , Derleme Bağlayıcısı'nın yayacağı kesin olarak imzalanan derlemenin ( .dll veya .exe dosyası) adıdır.
- moduleName , bir veya daha fazla tür içeren bir .NET Framework kod modülünün ( .netmodule dosyası) adıdır. Kodunuzu C# veya Visual Basic'te anahtarla
/target:module
derleyerek bir .netmodule dosyası oluşturabilirsiniz. - keyfileName , anahtar çiftini içeren kapsayıcının veya dosyanın adıdır. Derleme Bağlayıcısı, geçerli dizine göre göreli bir yolu yorumlar.
Aşağıdaki örnek, sgKey.snk anahtar dosyasını kullanarak derleme MyAssembly.dll kesin bir adla imzalar.
al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk
Bu araç hakkında daha fazla bilgi için bkz . Derleme Bağlayıcısı.
Öznitelikleri kullanarak bir derlemeyi tanımlayıcı adla imzalama
System.Reflection.AssemblyKeyFileAttribute kaynak kod dosyanıza veya AssemblyKeyNameAttribute özniteliğini ekleyin ve derlemeyi tanımlayıcı bir adla imzalarken kullanılacak anahtar çiftini içeren dosyanın veya kapsayıcının adını belirtin.
Kaynak kodu normal şekilde derleyin.
Not
C# ve Visual Basic derleyicileri, kaynak kodda veya AssemblyKeyNameAttribute özniteliğiyle karşılaştıklarında AssemblyKeyFileAttribute derleyici uyarıları (sırasıyla CS1699 ve BC41008) oluşturur. Uyarıları gözardı edebilirsiniz.
Aşağıdaki örnekte özniteliği, derlemenin AssemblyKeyFileAttribute derlendiği dizinde bulunan keyfile.snk adlı anahtar dosyasıyla birlikte kullanılır.
[assembly:AssemblyKeyFileAttribute("keyfile.snk")];
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>
Ayrıca kaynak dosyanızı derlerken bir derlemeyi imzalamayı erteleyebilirsiniz. Daha fazla bilgi için bkz . Derlemeyi gecikmeli imzalama.
Derleyiciyi kullanarak bir derlemeyi kesin adla imzalama
Kaynak kod dosyanızı veya dosyalarınızı C# ve Visual Basic'teki veya /delaysign
C++ içindeki /KEYFILE
veya /DELAYSIGN
bağlayıcı seçeneğiyle /keyfile
derleyin. Seçenek adından sonra, iki nokta işareti ve anahtar dosyasının adını ekleyin. Komut satırı derleyicileri kullanırken, anahtar dosyasını kaynak kodu dosyalarınızı içeren dizine kopyalayabilirsiniz.
İmzalama gecikmesi hakkında bilgi için bkz . Derlemeyi gecikmeli imzalama.
Aşağıdaki örnek C# derleyicisini kullanır ve sgKey.snk anahtar dosyasını kullanarak derleme UtilityLibrary.dll tanımlayıcı bir adla imzalar.
csc /t:library UtilityLibrary.cs /keyfile:sgKey.snk
Ayrıca bkz.
- Tanımlayıcı adlandırılmış derlemeler oluşturma ve kullanma
- Nasıl yapılır: Ortak-özel anahtar çifti oluşturma
- Al.exe (Bütünleştirilmiş Kod Bağlayıcı)
- Derlemeyi gecikmeli imzalama
- Tanımlayıcı ad API'leri PlatformNotSupportedException oluşturur
- Derleme ve bildirim imzalamayı yönetme
- İmzalama sayfası, Proje Tasarımcısı