Visual C++ her oluşturmaya sonra sürüm bilgisi artırılmasına nasıl kullanılır

Makale çevirileri Makale çevirileri
Makale numarası: 237870 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Özet

Visual C++, otomatik olarak her bir yap? sonra projenizin sürüm kaynak bilgilerini artırmak için bir özelliği yoktur. Bu makalede, bir özellik için bir yol.

Daha fazla bilgi

Burada, açıklanan adımları kullanarak yerine kaynak derleyici (.rc) dosyasını değiştirmek için bir program da yazabilirsiniz. Ancak RC dosyası, Visual C++ denetimi altında bulunur. Visual C++ RC dosyayı kaydederken değiştirir ve bu sürüm kaynağı etkileyebilir. Bu bölümde açıklanan yaklaşım tüm Visual C++ projeye uygulanır. Bu örnek, bir Microsoft Foundation Classes proje kullanır.

MFC (EXE) Appwizard kullanarak yeni bir proje oluşturmak ve bunu MyProject arayın. MyProject MyProject.rc2 içeren bir MyProject.rc dosyası gerekir. .Rc2 dosyası, kullanıcı tanımlı kaynaklar için tasarlanmıştır. Sonra her bir yap? MyProject'ın sürüm bilgileri artırmak için şu adımları izleyin:
  1. Sürüm kaynağı .rc dosyasından kaldırmak ve .rc2 dosyasında yerleştirin:

    1. MyProject.rc hem MyProject.rc2 (Kay klasöründe bulunur), bir metin düzenleyicisinde açın. Visual C++ düzenleyicisini kullanmak için <a0></a0>, Dosya menüsünden ' ı tıklatın ve sonra da açık listesini MyProject.rc dosyası içinmetni seçin.
    2. Sürüm kaynak deyimleri MyProject.rc bulabilirsiniz. Aşağıdakine benzer görünmelidir:
      /////////////////////////////////////////////////////////////////////// 
      // 
      // Version
      // 
      
      VS_VERSION_INFO VERSIONINFO
       FILEVERSION 1,0,0,1
       PRODUCTVERSION 1,0,0,1
       FILEFLAGSMASK 0x3fL
      #ifdef _DEBUG
       FILEFLAGS 0x1L
      #else
       FILEFLAGS 0x0L
      #endif
       FILEOS 0x4L
       FILETYPE 0x1L
       FILESUBTYPE 0x0L
      BEGIN
          BLOCK "StringFileInfo"
          BEGIN
              BLOCK "040904b0"
              BEGIN
                  VALUE "Comments", "Sample Application\0"
                  VALUE "CompanyName", "Microsoft Corp.\0"
                  VALUE "FileDescription", "MyProject MFC Application\0"
                  VALUE "FileVersion", "1, 0, 0, 1\0"
                  VALUE "InternalName", "MyProject\0"
                  VALUE "LegalCopyright", "Copyright (C) 1999\0"
                  VALUE "OriginalFilename", "MyProject.EXE\0"
                  VALUE "ProductName", "MyProject Application\0"
                  VALUE "ProductVersion", "1, 0, 0, 1\0"
              END
          END
          BLOCK "VarFileInfo"
          BEGIN
              VALUE "Translation", 0x409, 1200
          END
      END
      							
    3. MyProject.rc dosyasından sürüm kaynağı Kes ve "Ekle burada kaynakları el ile düzenlenen." MyProject.rc2 dosyasına açıklamanın altına yapıştırın Anlamı, kaynak alanların her biri hakkında daha fazla bilgi için Yardım'daki VERSIONINFO kaynak açıklamasına bakın.
  2. FILEVERSION ve PRODUCTVERSION veri FILEVER ve PRODUCTVER makrolarla değiştirin. Benzer şekilde, DosyaSürümü ve ProductVersion dize veri STRFILEVER ve STRPRODUCTVER makrolarla değiştirin.
  3. Bir # ekleme VersionNo.h hemen VS_VERSION_INFO kaynak deyiminin önüne ekleyin. Sürüm kaynağı görüneceğini artık istiyor:
    /////////////////////////////////////////////////////////////////////// 
    // 
    // Version
    // 
    #include "VersionNo.h"
    VS_VERSION_INFO VERSIONINFO
     FILEVERSION FILEVER
     PRODUCTVERSION PRODUCTVER
     FILEFLAGSMASK 0x3fL
    #ifdef _DEBUG
     FILEFLAGS 0x1L
    #else
     FILEFLAGS 0x0L
    #endif
     FILEOS 0x4L
     FILETYPE 0x1L
     FILESUBTYPE 0x0L
    BEGIN
        BLOCK "StringFileInfo"
        BEGIN
            BLOCK "040904b0"
            BEGIN
                VALUE "Comments", "Sample Application\0"
                VALUE "CompanyName", "Microsoft Corp.\0"
                VALUE "FileDescription", "MyProject MFC Application\0"
                VALUE "FileVersion", STRFILEVER
                VALUE "InternalName", "MyProject\0"
                VALUE "LegalCopyright", "Copyright (C) 1997\0"
                VALUE "OriginalFilename", "MyProject.EXE\0"
                VALUE "ProductName", "MyProject Application\0"
                VALUE "ProductVersion", STRPRODUCTVER
            END
        END
        BLOCK "VarFileInfo"
        BEGIN
            VALUE "Translation", 0x409, 1200
        END
    END
    					
  4. Proje ile aynı dizinde VersionNo.h adlı bir üstbilgi dosyası oluşturun. Bu dosya için 2 numaralı adımda kullanılan makro tanımları olan aşağıdaki ifadeleri içerir:
    #define FILEVER        1,0,0,1
    #define PRODUCTVER     1,0,0,1
    #define STRFILEVER     "1, 0, 0, 1\0"
    #define STRPRODUCTVER  "1, 0, 0, 1\0"
    						
    Not: satır besleme ve satır başlarını, karakterler son satırında dönmek Ekle.

    Şimdi, MyProject.rc2 MyProject.rc dosya içerir ve VersionNo.h MyProject.rc2 dosyası içerir.
  5. VersionNo.h dosyanın içeriği, makroyu Visual Basic komut dosyası kullanarak değiştirilecek. Makroyu, Visual C++ BuildFinish olay tanıtıcıları açıklanan, bu nedenle, bir derleme tamamlanıncaya kadar harekete.. Bu VB komut dosyası kodu olarak adlandırılan her sürüm numaraları üstbilgi dosyası içinde sabit bir tutar ilk artırır ve dosyayı kaydeder ve kapatır. Bir sonraki oluşturma sırasında yeni sürüm numarasını ve yürütülebilir dosya dahil edilir.

    Yükleme ve VB komut satırı kodu kullanma hakkında bilgi için aşağıdakileri yapın:

    1. Varolan bir DSM (makro) dosyasını açın veya yeni bir DSM Visual C++ oluşturarak. Yeni bir dosya oluşturmak için <a0></a0>, Dosya menüsünden Yeni ' yi tıklatın, Makro dosyadosyaları sekmesinde seçin, ona bir ad verin ve Tamam ' ı tıklatın.
    2. Aşağıdaki aşağıdaki VB komut dosyası kodu yapıştırın (boş bir DSM dosya Visual C++ ile yüklü; yükleme sonraki adım açıklanmıştır):
      Function GetProjectDir(FullName)
      
      'VC++ doesn't provide any method for getting the path of the active project
      'See the VB Script reference for more information on the VB Script functions 
      'used in this function
      
      Dim proj_path
      proj_path = Split(StrReverse(FullName),"\",-1,1)
      
      Dim count
      count = UBound(proj_path)
      
      Dim full_path
      full_path = ""
      Dim i
      
      for i = 1 to count 
      	full_path = full_path & "\" & proj_path(i)
      next
      
      GetProjectDir = StrReverse(full_path)
      
      End Function
      
      
      Sub ReplaceText(selection, count, incrementby)
      
      'selection represents the TextSelection object
      'count represents the position of the version number to be incremented
      'incrementby represents a number that will be added to the existing version number
      
      selection.WordRight dsMove, count
      selection.WordRight dsExtend, 1
      Dim str
      str = selection.Text
      str = str + incrementby
      
      selection.Text = str
      
      End Sub
      
      
      Sub Application_BuildFinish(numError, numWarning)
      
      'This event will be triggered after every build of a project
      'You can check numError and/or numWarning to determine if you want to continue
      'If numError <> 0 Then
          'exit sub
      'Obtain the full path of the active project
      Dim full_path
      full_path = GetProjectDir(ActiveProject.FullName)
      
      full_path = full_path & "versionno.h"
      
      'Open the VersionNo.h file
      Documents.Open full_path
      
      'Obtain the TextSelection object
      Dim selection
      set selection = ActiveDocument.Selection
      selection.StartOfDocument 
      
      'Increment the version information
      ReplaceText selection, 9, 1
      selection.LineDown
      selection.StartOfLine
      ReplaceText selection, 9, 1
      selection.LineDown
      selection.StartOfLine
      ReplaceText selection, 10, 1
      selection.LineDown
      selection.StartOfLine
      ReplaceText selection, 10, 1
      
      ActiveDocument.Save
      ActiveDocument.Close
       
      End Sub
      								
      Not: bu kod desteklenmeyen bir örnektir. Yapı senaryonuz için değiştirebilir.
    3. DSM dosya, zaten yüklü değilse yükleyin. Yüklemek için <a0></a0>, Araçlar menüsünde Özelleştir ' i tıklatın, sonra da eklentisi ve makro dosyaları sekmesini tıklatın, DSM dosyası seçmek için Gözat ve Kapat ' ı tıklatın.
  6. Yapı MyProject.exeOluştur menüden seçin. Oluşturma tamamlandıktan sonra VersionNo.h dosyayı açın. Aşağıdaki ifadeleri içerir:
    #define FILEVER        1,0,0,2
    #define PRODUCTVER     1,0,0,2
    #define STRFILEVER     "1, 0, 0, 2\0"
    #define STRPRODUCTVER  "1, 0, 0, 2\0"
    						
    yürütülebilir dosyanın içerdiği kodunu, bu sürüm bilgileri oluşturmak ve sürüm bilgilerini artırılır. Kod oluşturma hatalar üretilen, artan sürüm numaraları önlemek için daha önce açıklanan makroda neden olabilir.

Referanslar

Visual C++ nesne modeli hakkında daha fazla bilgi için MSDN Kitaplığı'nda aşağıdaki konuya bakın:
http://msdn.microsoft.com/en-us/library/aa712880(VS.71).aspx

VB Script makrolar hakkında daha fazla bilgi için MSDN Kitaplığı'nda aşağıdaki konuya bakın:
http://msdn.microsoft.com/en-us/library/aa247202(VS.60).aspx

VB komut dosyası dili hakkında daha fazla bilgi için MSDN Kitaplığı'nda aşağıdaki konuya bakın:
http://msdn.microsoft.com/en-us/library/d1wf56tt(vs.71).aspx

Visual C++ VERSIONINFO kaynak deyimi hakkında daha fazla bilgi için MSDN Kitaplığı'nda aşağıdaki konuya bakın:
http://msdn.microsoft.com/en-us/library/aa381043.aspx

Özellikler

Makale numarası: 237870 - Last Review: 2 Eylül 2005 Cuma - Gözden geçirme: 3.2
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
Anahtar Kelimeler: 
kbmt kbautomation kbdevstudio kbhowto kbide kbscript kbvcobj KB237870 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:237870

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com