Aracılığıyla paylaş


Derleme olaylarını belirtme (Visual Basic)

Visual Basic'te derleme olayları, derleme işleminin bir parçası olarak betikleri, makroları veya diğer eylemleri çalıştırmak için kullanılabilir. Derleme öncesi olaylar derlemeden önce gerçekleşir; derleme sonrası olaylar derlemeden sonra gerçekleşir.

Derleme öncesi ve derleme sonrası olayları nasıl belirtirsiniz?

Visual Basic .NET Core veya .NET 5 ve üzeri bir projenin derleme olaylarını görüntülemek veya değiştirmek için proje düğümüne sağ tıklayın ve Özellikler'i seçin (veya Alt+Enter tuşuna basın), ardından Derleme>Olayları'na gidin. İstediğiniz komut satırını girin. Çalışma dizini çıkış dizinidir.

.NET Framework projeleri için şu adımları izleyin:

  1. Çözüm Gezgini'nde bir proje seçiliyken, Proje menüsünde Özellikler'e tıklayın.

  2. Derle sekmesine tıklayın.

  3. Olayları Derle düğmesine tıklayarak Derleme Olayları iletişim kutusunu açın.

  4. Derleme öncesi veya sonrası eylemleriniz için komut satırı bağımsız değişkenlerini girin ve ardından Tamam düğmesine tıklayın.

Derleme olayları, Proje Tasarımcısı'nınDerleme sayfasında bulunan Derleme Olayları iletişim kutusunda belirtilir.

Derleme öncesi ve derleme sonrası olayları nasıl belirtirsiniz?

Derleme olayı belirtmek için

  1. Çözüm Gezgini'nde bir proje seçiliyken, Proje menüsünde Özellikler'e tıklayın.

  2. Derle sekmesine tıklayın.

  3. Olayları Derle düğmesine tıklayarak Derleme Olayları iletişim kutusunu açın.

  4. Derleme öncesi veya sonrası eylemleriniz için komut satırı bağımsız değişkenlerini girin ve ardından Tamam düğmesine tıklayın.

Uyarı

Dosyaları çalıştıran call tüm derleme sonrası komutlarının önüne bir .bat deyim ekleyin. Örneğin, call C:\MyFile.bat veya call C:\MyFile.bat call C:\MyFile2.bat.

Uyarı

Derleme öncesi veya derleme sonrası olayınız başarıyla tamamlanmazsa, olay eyleminizin sıfır (0) dışında bir kodla çıkışını yaparak derlemeyi sonlandırabilirsiniz ve bu da başarılı bir eylemi gösterir.

Betiklerde "makrolara" (bunlar aslında MSBuild özellik adlarıdır) başvurabilirsiniz. Bir özelliğe başvurmak için, olay betiği yürütülürken özellik değeriyle değiştirilen $(PropertyName) söz dizimini kullanın. Yaygın olarak kullanılan değerlerin listesi için bkz. MSBuild ortak özellikleri. Proje dosyasında, proje dosyasındaki içeri aktarılan dosyalarda, ortam değişkenlerinde tanımlanan veya komut satırı derlemeleri sırasında MSBuild anahtarı kullanılarak -p komut satırına geçirilen başka özellikler de olabilir.

Örnek: Derleme sonrası olayı kullanarak bildirim bilgilerini değiştirme

Aşağıdaki yordamda, proje dizinindeki .exe dosyasından gelen bir derleme sonrası olayda kullanılan .exe.manifest adlı bir komutla uygulama bildiriminde en düşük işletim sistemi sürümünün nasıl ayarlanacağı gösterilmektedir. En düşük işletim sistemi sürümü, 4.10.0.0 gibi dört parçalı bir sayıdır. Bunu yapmak için komut bildirimin <dependentOS> bölümünü değiştirir:

<dependentOS>
   <osVersionInfo>
      <os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
   </osVersionInfo>
</dependentOS>

Uygulama bildirimini değiştirmek üzere bir .exe komutu oluşturmak için

  1. komutu için bir konsol uygulaması oluşturun. Dosya menüsünde Yeni'ye ve ardından Proje'ye tıklayın.

  2. Yeni Proje iletişim kutusundaki Visual Basic düğümünde Windows'a ve ardından Konsol Uygulaması şablonuna tıklayın. Projeyi ChangeOSVersionVBolarak adlandırın.

  3. Module1.vb dosyasının en üstündeki diğer Imports deyimlere aşağıdaki satırı ekleyin:

    Imports System.Xml
    
  4. içine aşağıdaki kodu Sub Mainekleyin:

    Sub Main()
       Dim applicationManifestPath As String
       applicationManifestPath = My.Application.CommandLineArgs(0)
       Console.WriteLine("Application Manifest Path: " & applicationManifestPath.ToString)
    
       'Get version name
       Dim osVersion As Version
       If My.Application.CommandLineArgs.Count >= 2 Then
          osVersion = New Version(My.Application.CommandLineArgs(1).ToString)
       Else
          Throw New ArgumentException("OS Version not specified.")
       End If
       Console.WriteLine("Desired OS Version: " & osVersion.ToString())
    
       Dim document As XmlDocument
       Dim namespaceManager As XmlNamespaceManager
       namespaceManager = New XmlNamespaceManager(New NameTable())
       With namespaceManager
          .AddNamespace("asmv1", "urn:schemas-microsoft-com:asm.v1")
          .AddNamespace("asmv2", "urn:schemas-microsoft-com:asm.v2")
       End With
    
       document = New XmlDocument()
       document.Load(applicationManifestPath)
    
       Dim baseXPath As String
       baseXPath = "/asmv1:assembly/asmv2:dependency/asmv2:dependentOS/asmv2:osVersionInfo/asmv2:os"
    
       'Change minimum required OS Version.
       Dim node As XmlNode
       node = document.SelectSingleNode(baseXPath, namespaceManager)
       node.Attributes("majorVersion").Value = osVersion.Major.ToString()
       node.Attributes("minorVersion").Value = osVersion.Minor.ToString()
       node.Attributes("buildNumber").Value = osVersion.Build.ToString()
       node.Attributes("servicePackMajor").Value = osVersion.Revision.ToString()
    
       document.Save(applicationManifestPath)
    End Sub
    

    Komut iki argüman alır. İlk bağımsız değişken, uygulama bildiriminin yoludur (yani, derleme işleminin bildirimi oluşturduğu klasör, genellikle <ProjectName.publish>). Yeni işletim sistemi sürümü ikinci argümandır.

  5. Yapı menüsünde Yapı Çözümü’ne tıklayın.

  6. .exe dosyasını C:\TEMP\ChangeOSVersionVB.exegibi bir dizine kopyalayın.

    Ardından, uygulama bildirimini değiştirmek için bu komutu derleme sonrası olayda çağırın.

Uygulama bildirimini değiştirmek için sonrası oluşturma etkinliğini çağırmak

  1. Projenin yayımlanması için bir Windows uygulaması oluşturun. Dosya menüsünde Yeni'ye ve ardından Proje'ye tıklayın.

  2. Yeni Proje iletişim kutusundaki Visual Basic düğümünde Windows Masaüstü'nü ve ardından Windows Forms Uygulama şablonunu seçin. Projeyi VBWinAppolarak adlandırın.

  3. Proje Çözüm Gezgini'nde seçili durumdayken, Proje menüsünde Özellikler'e tıklayın.

  4. Proje Tasarımcısı'ndaYayımla sayfasına gidin ve Yayımlama konumunuC:\TEMP olarak ayarlayın.

  5. Şimdi Yayımla'ya tıklayarak projeyi yayımlayın.

    Bildirim dosyası derlenir ve C:\TEMP\VBWinApp_1_0_0_0\VBWinApp.exe.manifest dosyasına eklenir. Bildirimi görüntülemek için dosyaya sağ tıklayın ve Birlikte aç'a tıklayın, ardından Listeden programı seçin'e ve ardından Not Defteri'ne tıklayın.

    Dosya içinde <osVersionInfo> öğesini arayın. Örneğin, sürüm şu olabilir:

    <os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
    
  6. Proje Tasarımcısı'nda, Derle sekmesine gidin ve Olayları Derle düğmesine tıklayarak Derleme Olayları iletişim kutusunu açın.

  7. Derleme Sonrası Olay Komut Satırı kutusuna aşağıdaki komutu girin:

    C:\TEMP\ChangeOSVersionVB.exe "$(TargetPath).manifest" 5.1.2600.0

    Projeyi oluşturduğunuzda, bu komut uygulama bildirimindeki en düşük işletim sistemi sürümünü 5.1.2600.0 olarak değiştirir.

    Makro, $(TargetPath) oluşturulan yürütülebilir dosyanın tam yolunu gösterir. Bu nedenle, $(TargetPath).manifestbin dizininde oluşturulan uygulama bildirimini belirtir. Yayımlama, bu manifestoyu daha önce ayarladığınız yayımlama konumuna kopyalayarak gönderir.

  8. Projeyi yeniden yayımlayın. Yayımla sayfasına gidin ve Şimdi Yayımla'ya tıklayın.

    Bildirimi yeniden görüntüleyin. Bildirimi görüntülemek için yayımlama dizinine gidin, dosyaya sağ tıklayın, Birlikte aç'a tıklayın ve ardından Listeden programı seçin ve ardından Not Defteri'ne tıklayın.

    Sürüm artık şu şekilde olmalıdır:

    <os majorVersion="5" minorVersion="1" buildNumber="2600" servicePackMajor="0" />