2010-07-06 75 views
0

我什麼方法人都在使用的保證,他們正在尋找的源代碼,他們正在調試的二進制匹配疑惑。我是一個管理相當大的代碼集的開發人員,我發現在調試應用程序時,我總是想知道生成錯誤的二進制文件與我正在查看的代碼完全匹配。我建了一個簡單的應用程序來比較二進制文件,如果別人都在用這種方式,或者用其他的方法,比如版本納悶,等。匹配源在Visual Studio開發的二進制文件

回答

0

不Visual Studio中做這個的嗎?

每當你嘗試加載符號/源二進制,VS檢查PDB文件(如果你要調試源代碼,並不僅僅是組件,它需要)是否二進制相匹配。不知道確切的機制,但它工作得:VS拒絕如果PDB不符加載並以同樣的方式拒絕設置斷點在源如果源不匹配的二進制文件。

編輯:另請參閱選項 - >調試 - >常規:有一個選項要求源文件與原始版本完全匹配。選中時,VS會在進入與二進制文件完全不匹配的源文件時發出警告。

編輯迴應評論:雖然我沒有看到有十個可執行文件的好理由,但我在這裏是如何在我的項目中進行版本控制的;它可以用來做你所要求的。

  • 的集信息對每個項目只包含說明,公司,......,以及含有例如

    //VERSION_MAJOR 2 //VERSION_MAJOR 1

    (這些文件也簽入SVN順便說一句註釋掉了部分)

  • 此外,每個項目中都有一個AssemblyVersion.cs,其中再次包含一些註釋掉的代碼

    //VERSION_BUILD 1223 //VERSION_QFE 10

    ,也是實際的版本號,例如

    [assembly: AssemblyFileVersion ("2.1.1223.10")]

    (這些文件不是簽入SVN,但我有一個簡單的腳本重新檢出後生成)

  • 我所有的項目導入具有共同屬性的一個基地項目,除其中預生成事件調用它執行的可執行引人注目的工作:它可以讀寫VERSION_XXX數字以及AssemblyFileVersion字符串。該預生成看起來像

    <Exec Command="versioner -d$(ProjectDir) -f$(ProjectDir)Properties\AssemblyInfo.cs「/>

    它讀取的AssemblyInfo.cs獲取主版本號,讀取AssemblyVersion.cs爲其他號碼,設置BUILD的主項目目錄的當前SVN版本,遞增QFE號和寫回AssemblyVersion.cs遞增數量的關鍵是實現你想要什麼:沒有單一的版本將具有相同的版本,除非你溢出QFE數。

對於C++我使用

#define VERSION_MAJOR 2 

等,其被傳遞到用於填充與數字的VERSIONINFO部的資源文件。

因此,在你的情況下,當調試時,你會看版本文件,並將數字與二進制版本進行比較。除此之外,你還必須檢查每個單一源文件的最後修改日期是不是比版本文件的最後修改日期更新,否則你仍然不確定。

+0

我會重申這個問題。我給你一個VS2008 C#項目和10個二進制文件,並希望你告訴我,如果任何二進制文件將完全匹配源代碼構建的二進制文件。 「 – patrick 2010-07-06 20:02:27

+0

」增加數字是實現你想要的關鍵:沒有一個版本會有相同的版本...「 這正是我不想要的,多個版本完全相同的代碼,這是什麼你會得到自動遞增版本。 我想要做的是簡化問題,這就是爲什麼我將問題重述爲假設情況以澄清問題的原因。我將從更實際的角度重申這個問題。 程序員讀了一封電子郵件,意外地在他的老闆電腦上打開,告訴他他將在8周內被解僱。他決定在版本控制腳本中安裝 – patrick 2010-07-06 21:12:49

+0

錯誤。他被解僱了,他的計劃有效,在他終止8周後,他的技巧被發現。您將獲得大筆資金,以確定分散在25臺不同客戶端計算機上的30個二進制文件中的哪一個是相同的,哪些是不同的,並使用相應的日期重新分配版本號。你如何繼續? – patrick 2010-07-06 21:18:12

相關問題