Aracılığıyla paylaş


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:

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

  1. Çözüm Gezgini'da projenin kısayol menüsünü açın ve özellikler'i seçin.
  2. Derleme sekmesinin altında Bir Güçlü adlandırma düğümü bulacaksınız.
  3. Seçenekleri genişleten Derlemeyi imzala onay kutusunu seçin.
  4. 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.

Visual Studio 2022: Project properties, Build / Strong naming section.

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

  1. 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.

  2. 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.