Derleme olayları 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 olayları, Proje Tasarım Aracı Derleme sayfasında bulunan Derleme Olayları iletişim kutusunda belirtilir.
Not
Visual Basic Express, derleme olaylarının girişini desteklemez. Bu yalnızca tam Visual Studio ürününde desteklenir.
Derleme öncesi ve derleme sonrası olayları belirtme
Derleme olayı belirtmek için
Çözüm Gezgini'da bir proje seçiliyken, Proje menüsünde Özellikler'e tıklayın.
Derle sekmesine tıklayın.
Olayları Derle düğmesine tıklayarak Derleme Olayları iletişim kutusunu açın.
Derleme öncesi veya derleme sonrası eyleminiz için komut satırı bağımsız değişkenlerini girin ve tamam'a tıklayın.
Not
.bat dosyalarını çalıştıran tüm derleme sonrası komutlarının önüne bir
call
deyim ekleyin. Örneğin,call C:\MyFile.bat
veyacall C:\MyFile.bat call C:\MyFile2.bat
.Not
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.
Örnek: Derleme sonrası olayı kullanarak bildirim bilgilerini değiştirme
Aşağıdaki yordamda, derleme sonrası olaydan (proje dizinindeki .exe.manifest dosyası) adlı bir .exe komutu kullanılarak 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
komutu için bir konsol uygulaması oluşturun. Dosya menüsünde Yeni'ye ve ardından Proje'ye tıklayın.
Yeni Proje iletişim kutusundaki Visual Basic düğümünde Windows'a ve ardından Konsol Uygulaması şablonuna tıklayın. Projeyi
ChangeOSVersionVB
olarak adlandırın.Module1.vb dosyasında, dosyanın en üstündeki diğer
Imports
deyimlere aşağıdaki satırı ekleyin:Imports System.Xml
Aşağıdaki kodu
Sub Main
içine ekleyin: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
komutu iki bağımsız değişken 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>).< İkinci bağımsız değişken, yeni işletim sistemi sürümüdür.
Yapı menüsünde Yapı Çözümü’ne tıklayın.
.exe dosyasını C:\TEMP\ChangeOSVersionVB.exe gibi 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 üzere derleme sonrası olayı çağırmak için
Projenin yayımlanması için bir Windows uygulaması oluşturun. Dosya menüsünde Yeni'ye ve ardından Proje'ye tıklayın.
Yeni Proje iletişim kutusundaki Visual Basic düğümünde Windows Masaüstü'nü ve ardından Windows Forms Uygulama şablonunu seçin. Projeyi
VBWinApp
olarak adlandırın.proje Çözüm Gezgini'de seçili durumdayken, Proje menüsünde Özellikler'e tıklayın.
Project Tasarım Aracı Yayımla sayfasına gidin ve Yayımlama konumunu C:\TEMP olarak ayarlayın.
Ş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'e tıklayın.
dosyasında öğesini arayın
<osVersionInfo>
. Örneğin, sürüm şu olabilir:<os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
Proje Tasarım Aracı Derle sekmesine gidin ve Derleme Olayları düğmesine tıklayarak Derleme Olayları iletişim kutusunu açın.
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).manifest, bin dizininde oluşturulan uygulama bildirimini belirtir. Yayımlama, bu bildirimi daha önce ayarladığınız yayımlama konumuna kopyalar.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'e tıklayın.
Sürüm artık şu şekilde olmalıdır:
<os majorVersion="5" minorVersion="1" buildNumber="2600" servicePackMajor="0" />