Bagaimana untuk peningkatan versi informasi setelah setiap membangun di Visual C++

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 237870 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

RINGKASAN

Visual c ++ tidak memiliki fitur untuk secara otomatis peningkatan versi sumber daya informasi proyek Anda setelah setiap membangun. Artikel ini menggambarkan salah satu cara untuk menyediakan fitur tersebut.

INFORMASI LEBIH LANJUT

Anda dapat menulis program untuk memodifikasi file sumber daya Kompilator (.rc) alih-alih menggunakan langkah-langkah yang dijelaskan di sini. Namun, berkas RC berada di bawah kontrol Visual C++. Visual c ++ memodifikasi file RC sementara menyimpan, dan hal ini dapat mempengaruhi versi sumber daya. Pendekatan yang dijelaskan dalam bagian ini dapat diterapkan untuk setiap proyek Visual C++. Contoh ini menggunakan Microsoft Foundation Classes proyek.

Membuat proyek baru menggunakan MFC (EXE) Appwizard dan menyebutnya MyProject. MyProject akan memiliki file MyProject.rc, yang termasuk MyProject.rc2. Berkas .rc2 dimaksudkan untuk sumber daya yang ditetapkan pengguna. Ikuti langkah berikut untuk peningkatan MyProject's versi informasi setelah setiap membangun:
  1. Menghapus sumber versi dari .rc file dan meletakkannya pada berkas .rc2:

    1. Buka MyProject.rc dan MyProject.rc2 (ditemukan di Res folder), di sebuah editor teks. Menggunakan editor Visual C++, klik Terbuka pada Berkas menu dan pilih Teks dalam Terbuka sebagai Daftar untuk berkas MyProject.rc.
    2. Mengetahui versi sumber daya pernyataan di MyProject.rc. Seharusnya terlihat seperti:
      /////////////////////////////////////////////////////////////////////// 
      // 
      // 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. Memotong sumber versi dari MyProject.rc file dan menyisipkannya ke dalam berkas MyProject.rc2 di bawah komentar "Tambah secara manual diedit sumber daya di sini." Untuk informasi tentang apa yang masing-masing bidang dalam sumber daya berarti, melihat sumber daya VERSIONINFO pernyataan dalam bantuan.
  2. Ganti data FILEVERSION dan PRODUCTVERSION dengan macro FILEVER dan PRODUCTVER. Demikian pula, menggantikan FileVersion dan ProductVersion data string dengan macro STRFILEVER dan STRPRODUCTVER.
  3. Menambahkan # termasuk VersionNo.h segera sebelum sumber daya VS_VERSION_INFO pernyataan. Sekarang versi sumber akan terlihat seperti:
    /////////////////////////////////////////////////////////////////////// 
    // 
    // 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. Buat header file bernama VersionNo.h dalam direktori yang sama sebagai proyek Anda. File ini akan berisi pernyataan berikut, yang merupakan definisi untuk makro yang digunakan pada langkah 2:
    #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"
    						
    Catatan: Menambahkan linefeed dan kereta kembali karakter pada baris terakhir.

    Sekarang, MyProject.rc file termasuk MyProject.rc2, dan MyProject.rc2 file termasuk VersionNo.h.
  5. VersionNo.h isi file akan diubah dengan menggunakan makro Visual Basic Script. Makro dijelaskan di bawah ini menangani peristiwa Visual C++ BuildFinish, sehingga ia tidak akan dipecat sampai selesai membangun. Setiap kali kode VB Script ini disebut, itu pertama akan menambahkan nomor versi di dalam header file dengan jumlah yang tetap, maka menyimpan berkas dan menutup itu. Selama membangun berikutnya, nomor versi baru termasuk dalam executable.

    Untuk menginstal dan menggunakan kode VB Script, lakukan hal berikut:

    1. Buka file DSM (makro) yang ada atau membuat file DSM baru dalam Visual C++. Untuk membuat file baru, klik Baru pada Berkas menu, pilih Makro File pada File tab, memberinya nama dan klik Oke.
    2. Paste kode VB Script berikut di bawah ini (file DSM kosong tidak dapat diinstal dalam Visual C++; langkah berikutnya menjelaskan menginstal):
      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
      								
      CATATAN: Kode ini adalah sampel tidak didukung. Anda dapat mengubah itu untuk membangun skenario.
    3. Menginstal DSM file jika tidak diinstal. Untuk menginstal, klik Menyesuaikan pada Alat menu, klik Add-in dan Macro file tab, browse untuk memilih DSM file, klik Tutup.
  6. Pilih Membangun MyProject.exe dari Bangun menu. Setelah membangun selesai, buka VersionNo.h file. Itu akan berisi pernyataan berikut:
    #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"
    						
    Jika Anda membangun kode lagi, informasi versi ini disertakan dalam executable, dan informasi versi bertambah. Anda dapat memperkenalkan beberapa kode di makro yang dijelaskan sebelumnya untuk mencegah incrementing nomor versi jika membangun menghasilkan kesalahan.

REFERENSI

Untuk informasi lebih lanjut tentang model objek Visual C++ lihat topik berikut di MSDN perpustakaan:
.aspx http://MSDN.Microsoft.com/en-us/library/aa712880 (VS.71)

Untuk informasi lebih lanjut tentang VB Script macro, lihat topik berikut di MSDN perpustakaan:
.aspx http://MSDN.Microsoft.com/en-us/library/aa247202 (VS.60)

Untuk informasi lebih lanjut tentang bahasa VB Script, lihat topik berikut di MSDN perpustakaan:
.aspx http://MSDN.Microsoft.com/en-us/library/d1wf56tt (vs.71)

Untuk informasi lebih lanjut tentang pernyataan Visual C++ VERSIONINFO sumber daya, lihat topik berikut di MSDN perpustakaan:
http://MSDN.Microsoft.com/en-us/library/aa381043.aspx

Properti

ID Artikel: 237870 - Kajian Terakhir: 20 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
Kata kunci: 
kbautomation kbdevstudio kbhowto kbide kbscript kbvcobj kbmt KB237870 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:237870

Berikan Masukan

 

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