我在VS2012中編寫了一個c#控制檯應用程序,並且所有工作都很完美,因此我將.exe文件放在我們的服務器上供人們使用。在VisualStudio中打開我自己的可執行文件
在將它添加到源代碼控制之前,我做了一些編輯,現在它不工作。有沒有辦法從工作的exe文件中提取我的工作代碼,或者我是否試圖從內存中重建?
我在VS2012中編寫了一個c#控制檯應用程序,並且所有工作都很完美,因此我將.exe文件放在我們的服務器上供人們使用。在VisualStudio中打開我自己的可執行文件
在將它添加到源代碼控制之前,我做了一些編輯,現在它不工作。有沒有辦法從工作的exe文件中提取我的工作代碼,或者我是否試圖從內存中重建?
是的,你可以從你的可執行文件中反編譯你的.Net代碼。
.Net Reflector做得很好,甚至可以重新生成整個解決方案。
我首先嚐試了這一點,它的工作,(見關於新變量/評論的答案)這是足夠的代碼讓我知道我以前在哪裏,我只是重置變量,我想要什麼,我回來了並跑步。很容易使用,只需下載並做一個文件/打開,然後使用該瀏覽器導航到我的主程序。 – Dave
來自Telerik的JustDecompile將允許您從現有的.net程序集中提取項目並且它是免費的。
嘗試.NetReflector(工作)後,我下載了JustDecompile只是爲了嘗試它,它也可以。只需將.exe文件拖入瀏覽器並導航到主程序,並將我所需的內容拉出來。謝謝 – Dave
反編譯器會給你「工作代碼」,但它不會是「你的」工作代碼。
所有的註釋和局部變量名稱都將消失。新的臨時變量將被添加。並且一些編碼構建體(即,循環是否爲for
,while
或do-while
)可以不同但等同表示。
因此,反編譯器對於幫助您確認您的內存很有用(是否包含在該版本中的這個更改是否包含在該版本中?),但不用於獲取源代碼控制就緒代碼。
我嘗試了下面兩個程序,並想知道爲什麼他們的輸出與我的原始輸出不完全相同。記憶提醒足以知道我需要去哪裏,我只需要重新格式化我的變量,併爲下一個人重新添加一些評論。 – Dave
我喜歡IlSpy作爲免費反編譯器。 http://ilspy.net/
使用反編譯器。 [.NET Reflector](http://www.red-gate.com/products/dotnet-development/reflector/),[dotPeek](http://www.jetbrains.com/decompiler/)和[ILSpy] (http://ilspy.net/)是很好的選擇。 –
[dotPeek](http://www.jetbrains.com/decompiler/)適用於我。 –