Genel Derleme Önbelleğine bir derleme yüklemek için Visual C# kullanma

Bu makalede, Visual C# içindeki Genel Bütünleştirilmiş Kod Önbelleğine derleme yükleme hakkında bilgi sağlanır.

Orijinal ürün sürümü: Visual C#
Özgün KB numarası: 815808

Özet

Bu makalede, derleme için tanımlayıcı bir ad oluşturma ve Genel Derleme Önbelleği'ne (GAC) .dll dosyası yükleme işlemleri açıklanır. GAC ile derlemeleri birçok uygulamada paylaşabilirsiniz. GAC, .NET çalışma zamanı ile otomatik olarak yüklenir. Bileşenler genellikle içinde C:\WINNT\Assemblydepolanır.

GAC'de bir derleme yüklemek için derlemeye kesin bir ad vermeniz gerekir. Ad, şifreleme karma anahtarı veya imzadır. Bu tanımlayıcı ad, doğru bileşen sürümü oluşturma işlemini güvence altına alır. Bu, aynı ada sahip bileşenlerin birbiriyle çakışmasını veya kullanan bir uygulama tarafından yanlış kullanılmasını önlemeye yardımcı olur.

Gereksinimler

  • Paylaşılan derlemenin yüklendiği bilgisayarda yönetici hakları
  • .NET'teki derlemeler hakkında genel bilgi.
  • Komut isteminde araçların kullanımı hakkında genel bilgi.

Genel Derleme Önbelleği

Visual Studio kullanarak küçük bir Sınıf Kitaplığı projesi oluşturmak, tanımlayıcı bir ad oluşturmak ve projenin .dll dosyasını GAC'ye yüklemek için şu adımları izleyin:

  1. Visual Studio'da yeni bir Visual C# Sınıf Kitaplığı projesi oluşturun ve projeyi GACDemo olarak adlandırın.

  2. Tanımlayıcı bir ad kullanmalısınız. Bu şifreleme anahtar çiftini oluşturmak için Tanımlayıcı Ad aracını (Sn.exe) kullanın. Bu araç, .NET Framework Çözüm Geliştirici Seti'nin \bin (SDK) yüklü olduğu alt dizinde bulunur. Sn.exe aracının kullanımı kolaydır. Komut satırı deyimi aşağıdakileri alır

    sn -k "[DriveLetter]:\[DirectoryToPlaceKey]\[KeyName].snk"
    

    Not

    Visual Studio'da, bir anahtar çifti oluşturmak ve derlemenizi imzalamak için IDE proje özelliklerini kullanabilirsiniz. Ardından, 3. ve 4. adımı atlayabilir ve ayrıca AssemblyInfo.cs dosyasında kod değişiklikleri yapmayı atlayabilirsiniz.

    IDE proje özelliklerini kullanarak anahtar çifti oluşturmak ve derlemenizi imzalamak için şu adımları izleyin:

    1. Çözüm Gezgini'de GACDemo'ya sağ tıklayın ve ardından Özellikler'e tıklayın.

    2. İmzalama sekmesine tıklayın ve ardından Derlemeyi imzala onay kutusunu seçmek için tıklayın.

    3. Tanımlayıcı ad anahtarı seçin listesinde Yeni...>'ye tıklayın<.

    4. Anahtar dosyası adı olarak GACkey.snk yazın, Anahtar dosyamı parolayla koru onay kutusunu temizleyin ve ardından Tamam'a tıklayın.

    5. Projeyi derlemek için CTRL+SHIFT+B klavye kısayolu tuşlarına basın.

    Bu adımları izledikten sonra, derlemenizi GAC'ye yüklemek için 5. adımı izlemeniz gerekir.

  3. Anahtarı kolayca bulabilmeniz ve komut isteminde anahtara erişebilmeniz için içinde C:\GACKey adlı bir dizin oluşturun.

    Çoğu kullanıcı için .NET araçları içinde C:\Program Files\Microsoft.NET\FrameworkSDK\Binbulunur. Aşağıdaki komutu yazmadan önce, bilgisayarınızdaki bu benzer yolu .NET bin dizinine kopyalamak isteyebilirsiniz. Komut istemine yazın cd , yolu yapıştırmak için sağ tıklayın ve ardından SN Aracı'nın bulunduğu dizine hızla geçmek için ENTER tuşuna basın.

    Aşağıdaki komutu yazın:

    sn -k "C:\GACKey\GACkey.snk"
    
  4. Bir anahtar oluşturulur, ancak henüz projenin derlemesiyle ilişkilendirilmemiştir. Bu ilişkilendirmeyi oluşturmak için Visual Studio .NET Çözüm Gezgini AssemblyInfo.cs dosyasına çift tıklayın. Bu dosya, Visual Studio .NET'te bir proje oluşturulduğunda varsayılan olarak dahil edilen derleme özniteliklerinin listesine sahiptir. Koddaki AssemblyKeyFile derleme özniteliğini aşağıdaki gibi değiştirin:

    [assembly: AssemblyKeyFile('C:\\GACKey\\GACKey.snk') ]
    

    CTRL+SHIFT+B tuşlarına basarak projeyi derleyin. GAC'ye bir .dll dosyası yüklemek için ek koda sahip olmanız gerekmez.

  5. gacutil aracını kullanarak veya .dll dosyasını uygun klasöre sürükleyerek .dll dosyasını yükleyebilirsiniz. Gacutil aracını kullanıyorsanız, aşağıdakine benzer bir komut kullanabilirsiniz:

    gacutil -I "[DriveLetter]:\[PathToBinDirectoryInVSProject]\gac.dll"
    

    Dosyayı sürüklemek için windows gezgininin iki örneğini açın. Bir örnekte konsol projeniz için .dll dosya çıkışının konumunu bulun. Diğer örnekte öğesini bulun c:\<SystemRoot>\Assembly. Ardından, .dll dosyanızı Assembly klasörüne sürükleyin.

Tam kod listesi (AssemblyInfo.cs)

using System.Reflection;
using System.Runtime.CompilerServices;

// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// that is associated with an assembly.
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Version information for an assembly is made up of the following four values:
// Major Version
// Minor Version
// Build Number
// Revision
// You can specify all the values, or you can default the revision and build numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.*")]
// To sign your assembly you must specify a key to use. See the
// Microsoft .NET Framework documentation for more information about assembly signing.
// Use the following attributes to control that key is used for signing.
// Notes:
//     (*) If no key is specified, the assembly is not signed.
//     (*) KeyName refers to a key that has been installed in the Crypto Service
//         Provider (CSP) on your computer. KeyFile refers to a file that contains
//         a key.
//     (*) If the KeyFile and the KeyName values are both specified, the
//         following processing occurs:
//         (1) If the KeyName can be found in the CSP, that key is used.
//         (2) If the KeyName does not exist and the KeyFile does exist, the key
//             in the KeyFile is installed to the CSP and used.
//     (*) To create a KeyFile, you can use the sn.exe (Strong Name) utility.
//         When specifying the KeyFile, the location of the KeyFile must be
//         relative to the project output directory which is
//         %Project Directory%\obj\<configuration>. For example, if your KeyFile is
//         located in the project directory, you would specify the AssemblyKeyFile
//         attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
//     (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
//         documentation for more information about this.
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("C:\\GACKey\\GACKey.snk")]
[assembly: AssemblyKeyName("")]

Doğrulama

  1. Windows Explorer'ı başlatın.
  2. öğesini bulun C:\SystemRoot\assembly.
  3. Yüklü .dll dosyaları listesinde GACDemo ifadesini görürsünüz.

Başvurular