2012-07-05 33 views
6

我想要生成一個足夠聰明的工具,以便編程檢查在不同時間在兩個獨立機器上編譯的相同C#代碼生成的發行版本二進制文件,並得出結論:代碼完全相同同時能夠獲取任何代碼更改(如果存在於用於生成這些二進制文件的c#代碼中)。可重複構建來自不同機器上的相同C#源代碼

我嘗試過使用多種方法,但爲了保持這個短小,我只會堅持最新的嘗試。 我用二進制文件的/ text選項運行ildasm並替換文本中匿名字段等的GUID,但是當二進制文件來自不同的pcs時,我發現ILDASM/text選項生成的文本被重新排序。源自相同代碼但在不同機器上通過相同設置編譯的二進制文件也顯得重新排序。任何建議如何能夠控制IL的重新排序將不勝感激?

乾杯

PS:可靠地實現這一點的任何替代戰略也深受歡迎。

+1

你不能比較源代碼,因爲?... –

+0

此外,這可能是相關的:http://stackoverflow.com/questions/1335427/why-does-c-sharp-generate-different-exes -for-the-same-source-code –

+1

如果可能,你能告訴你爲什麼需要這樣的工具嗎?也許有更好的解決方案來解決你想通過創建它來解決的問題。 –

回答

2

我發現,根據一個解決方案是什麼埃裏克利珀在他的崗位是什麼,他的客戶最終妥協,可以通過爲編譯過程的處理器關係設置爲01到達提及。在此之後,生成的可執行文件/ dll在使用som mvid和guid時幾乎完全相同。使用文本模式在這些二進制文件上運行ILDASM,並構建一個簡單的哈希工具來去除這些隨機的東西提供了這樣的解決方案。我只是爲了完成而提供這些信息,並幫助其他可能會遇到此問題的人。

相關問題