我有一個.cs文件,裏面有我的代碼。我編譯了它,並且得到了一個.dll文件。 我可以打開我的.dll文件並查看我的c#代碼,因爲我想再次編譯它?我可以打開我的Dll文件嗎
回答
使用Reflector.Net
查看您的代碼,您可以使用它來反彙編您的DLL。或者,如果您有原始的cs文件,那麼您可以使用C#編譯器進行重建。
您可以使用反彙編程序,如Reflector(或許多alternatives之一)將CIL反彙編回C#。
不確定爲什麼你需要它,如果你自己編譯DLL - 你肯定有源代碼?
呃,你說你編譯過一次。這意味着你已經有了源代碼。它在我看來有點異常,試圖反編譯DLL以重新編譯它,假設你有源代碼。這就是說C#編譯器吐出了MSIL代碼,這意味着你可以使用例如ildasm.exe這樣的工具從編譯後的程序集中得到這個MSIL代碼。然後,您可以修改生成的IL,並使用ilasm.exe實用程序將其重新編譯爲託管程序集。
當然,如果初始程序集使用強密鑰進行簽名,如果不使用私鑰進行處理,您將無法使用此密鑰對其進行簽名。
有一些工具,例如ILSpy(免費)和.NET Reflector(商業),它們允許您將託管程序集反彙編成一些託管語言(C#,VB.NET,...)。當然,在這個過程中,你不能期望獲得最初編譯程序集時使用的完全相同的源代碼,特別是如果它是在Release模式下編譯的,並且開啓了優化功能,因爲像本地變量名稱和註釋一樣不是導致組裝。
既然你使用.NET,是的。 .NET程序集實際上被設計爲易於反編譯,所以反射更容易和更快。
你只需要一個類似.NET Reflector的反編譯工具就可以進行反編譯。反射器現在是零售產品,但有幾種免費軟件替代品;我使用CodeReflect。但是,儘管像這樣的工具會向您顯示與您的原始代碼接近的東西,但首先它不會是精確的(條件編譯的代碼不會出現,某些調用和構造可以被優化,或者看起來像在IL中也是一樣的,只是略有不同的構造),其次,它不允許你改變任何東西。如果您有.cs文件和Visual Studio(或MSBuild;由VS使用的命令行工具)的副本,則可以將源文件重新編譯到DLL中。
- 1. 我可以在Python中使用Popen打開的gzip文件嗎?
- 2. MySql連接,我可以打開它嗎?
- 3. 我可以從popen()流打開bash嗎?
- 4. 我可以在SQL CLR中打開外部文件嗎?
- 5. 我可以在AppEngine上打開/寫入SQLite文件嗎?
- 6. 我可以打開一個文件讓R運行代碼嗎?
- 7. 我可以在Express中打開Installshield Pro文件嗎?
- 8. 我可以在Ace Editor中打開HTML文件嗎?
- 9. 我可以用application/vnd.openxmlformats-officedocument.spreadsheetml.sheet打開一個xlsx文件嗎?
- 10. 我們可以阻止打開CSS,JS文件嗎?
- 11. iPhone:我們可以使用UIWebView打開pdf文件嗎?
- 12. 我們可以在android中打開一個swf文件嗎?
- 13. 我可以有兩個組頭文件嗎?我可以替代打印嗎?
- 14. 我可以打開Cookie文件並查看該文件中的內容嗎?
- 15. 我可以找到.NET dll構建的目標文件嗎?
- 16. 我可以組織DLL中的類嗎?
- 17. Dreamweaver可以打開.manifest文件嗎?
- 18. 我可以關閉我打開的瀏覽器活動嗎?
- 19. 我可以從2天前獲得以前打開的文件列表嗎?
- 20. 我可以分開我的Capistrano capfile嗎?
- 21. 我可以運行一個批處理文件,當我打開
- 22. 我可以簽署不是開源的DLL嗎?
- 23. 我們可以從.dll文件中檢索方法體嗎?
- 24. 我可以在android應用程序中使用dll文件嗎?
- 25. 我可以在DLL中嵌入其他文件嗎?
- 26. 我們可以直接在IDE中打開設計文檔嗎?
- 27. 我可以使用Chromium從本地網頁打開可執行文件嗎?
- 28. 我可以在MacVim內運行軟件包打開命令嗎?
- 29. 我可以在VB6中打開不可見的窗體嗎?
- 30. 我可以記住UWP應用程序中打開的文件嗎?
請不要在標題中加上「C#」來表明它是一個C#問題。這就是標籤的用途。 – 2011-06-16 19:45:55
編譯後你把它放在哪裏? – 2011-06-16 19:46:00
他應該說「輕推微調眨眼睛」以及他的問題 - 他顯然是在嘗試反編譯他沒有源代碼的東西。 – 2011-06-16 19:48:48