[問題] DLL版本與source code對應控管問題
C# 相同的 source code 每次編譯時的輸出exe or dll不完全相同
如何知道某一版程式(exe or dll)跟source code的對應關係?
問題是這樣的
例如 某個自己開發的libray 我使用git控管了2版程式 rev1, rev2
這個libray提供給多個專案使用
舊的專案可能用到rev1 新的專案用到rev2
某個久遠的專案
某天客戶跟你回報一個bug
客戶環境中只有dll 沒有source code, 因為上述問題
我無法知道它是控管中的哪一版編譯出的output
請問已發布的dll跟source code的對應實務上是怎麼做的?
在控管中加入dll嗎?
寫C/C++時 code每次編譯的output是一樣的
在embedded or linux環境 可以用checksum檢查
最差的情況就是 git 切換到每一個rev 重新編譯一次 跟客戶端的dll比較 cksum即可
在C#碰到這個問題 特別請教一下 3Q
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.147.49.32
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1490527267.A.5F8.html
※ 編輯: poloball (27.147.49.32), 03/26/2017 19:21:42
推
03/26 22:43, , 1F
03/26 22:43, 1F
→
03/26 22:43, , 2F
03/26 22:43, 2F
其實我的問題跟git沒關係 換一個方式問好了
如果有兩份source code, 各自對應 dll
code1 -> DLL_1
code2 -> DLL_2
如果某人隨便從其中拿一個DLL給我
可以知道是從 code1 or code2編譯出來的嗎? (不去測試的情況下)
如果是C/C+ 因為每次編譯都相同
未知的DLL跟已知的DLL binary比較就可以知道來源是code1 or code2
但是因為C#每次編譯 output檔案的binary都會變 所以這個辦法不行
會問這個是因為 我無法確定前人的專案 到底用的是哪一版code
在debug的時候碰到困難
※ 編輯: poloball (27.147.49.32), 03/26/2017 23:48:54
※ 編輯: poloball (27.147.49.32), 03/26/2017 23:50:01
→
03/27 11:35, , 3F
03/27 11:35, 3F
推
03/27 11:39, , 4F
03/27 11:39, 4F
→
03/27 11:39, , 5F
03/27 11:39, 5F
→
03/27 11:40, , 6F
03/27 11:40, 6F
→
03/27 11:40, , 7F
03/27 11:40, 7F
→
03/27 11:52, , 8F
03/27 11:52, 8F
→
03/27 11:53, , 9F
03/27 11:53, 9F
→
03/27 11:54, , 10F
03/27 11:54, 10F
→
03/27 11:54, , 11F
03/27 11:54, 11F
→
03/28 12:08, , 12F
03/28 12:08, 12F
→
03/28 12:09, , 13F
03/28 12:09, 13F
→
03/28 12:10, , 14F
03/28 12:10, 14F
→
03/28 12:11, , 15F
03/28 12:11, 15F
→
03/28 12:12, , 16F
03/28 12:12, 16F
我想要能100%確定 DLL來源source code的方式
光看 assembly 版號也不完全可靠吧? 如果沒有自動化的流程
可能某次忘了進版, 可能某人臨時隨手改了一點東西 編譯後就把DLL給人了
以前專案管理比較混亂 程式又已經在客戶端運作已久
沒十足把握不敢亂更新
petercoin大 說的decompile 可能是我要的答案
但是還滿意外 C# 在這件事上這麼麻煩?
為什麼要設計成 每次編譯都會輸出不同binary 0.0
※ 編輯: poloball (27.147.49.32), 03/28/2017 19:53:50
噓
03/28 21:56, , 17F
03/28 21:56, 17F
→
03/28 21:57, , 18F
03/28 21:57, 18F
→
03/28 21:59, , 19F
03/28 21:59, 19F
→
03/28 22:00, , 20F
03/28 22:00, 20F
→
03/28 22:00, , 21F
03/28 22:00, 21F
→
03/28 22:20, , 22F
03/28 22:20, 22F
→
03/28 22:20, , 23F
03/28 22:20, 23F
→
03/29 21:06, , 24F
03/29 21:06, 24F