1

當在Windows資源管理器中將鼠標光標懸停在文件上時顯示的版本信息將設置爲由Visual Studio在VERSION資源中構建的文件。我想在一個地方爲解決方案構建的所有文件設置版本,最好是在更改安裝屬性中的版本時。有沒有辦法做到這一點?visual-studio-2008 versioninfo從一個位置更新的所有文件

這樣做的動機是,如果版本未針對某個文件進行更新,那麼安裝程序將保留以前版本的文件,而不是用新文件替換它們。即使設置了「RemovePreviousVersions」屬性,也會發生這種情況。爲了節省構建和安裝的每個文件中更新版本的單調乏味和容易出錯的任務,我從所有文件中刪除了版本資源 - 這並不優雅。

回答

1

Stack Overflow主題How to programatically change a project's product version?的第二個答案提供了一個解決方案,用於從C++中的通用頭文件設置版本號。只需將包含硬編碼版本號的頭文件放在每個項目都可以找到的文件夾中即可。

以上答案還描述了增加版本號的方法。 Microsoft的文章How to increment version information after each build in Visual C++提供了C++版本遞增的替代方法。

或者,您可以使用源代碼管理系統存儲庫修訂版號作爲版本號的一部分。 Stack Overflow文章Creating a file with build number and branch name in SVN爲TortoiseSVN用戶提供了一些有關這方面的信息。以下兩篇文章中更深入探索這個:

Integrating the Subversion Revision into the Version Automatically with .NET (C# or VB)

Integrating the Subversion Revision into the Version Automatically with Native C/C++

(上述兩個網頁功能鏈接到類似的程序 TortoiseHg用戶)

從理論上講,你可以有一個文本文件來保存新的版本號,然後運行一個預生成腳本,將:

  1. 增量在文本文件中的版本號(可選 納入庫修訂數)
  2. 寫出或修改普通版文件:
    • C++(version.h中)
    • C#(GlobalAssemblyInfo.cs)
    • Java(通過Ant屬性文件的方式,例如version.properties)
+0

運行預編譯腳本以增加文本文件中的版本號,然後包含在所有文件中,這是我在過去的一兩年中所做的,所以我會接受這個答案。 – ravenspoint 2012-03-01 21:22:22

0

要集中版本的解決方案:

  1. 就拿版本信息出來的AssemblyInfo.cs的;
  2. 創建一個新文件(GlobalAssemblyInfo.cs),並在其中放入版本信息(使用*可讓VS爲每個版本創建一個新的版本號);
  3. 引用GlobalAssemblyInfo.cs作爲鏈接:添加|現有項目然後下拉文件選擇中的添加按鈕以選擇添加爲鏈接;
  4. 重複解決方案中的每個項目;

我使用的塊這樣的版本:

的#if DEBUG

[組件:的AssemblyVersion( 「1.8.0.0」)]

的#else

[彙編:AssemblyVersion(「1.8。*」)]

#endif

這使得VS在開發過程中不會重建每個程序集,但在構建版本時會爲每個程序集提供新的版本號。

+0

什麼是 'AssemblyInfo.cs中'。我沒有這樣的文件或類似的東西。 – ravenspoint 2010-04-29 14:38:00

+0

versioninfo存儲在名爲(projectname)的文件中.rc – ravenspoint 2010-04-29 14:41:06

+0

它看起來像'AssemblyInfo.cs'用於.NET託管代碼。我的項目都是直截了當的C++。 *爲VS創建每個版本的新版本號看起來非常整齊,但似乎不適合我的項目。 – ravenspoint 2010-04-29 14:57:57

相關問題