2010-11-19 117 views
3

我們有一些內部專有的數據庫CLR存儲過程(MSSQL 2005),這些過程由前員工放在一起,他們錯誤地(並且從未檢查過)用於構建程序集的.NET源代碼。這些沒有被混淆。是否可以反編譯SQL Server CLR存儲過程程序集?

是否有可能將程序集反向工程到可以編輯源代碼並重新編譯的狀態?

+2

您是否嘗試過使用反射器?它通常非常擅長反編譯。 – cdhowie 2010-11-19 05:15:37

回答

4

是的,只要你有組裝,它並沒有以任何方式被隱瞞。

.net反射應該爲你工作:

http://www.red-gate.com/products/reflector/

+4

「Obtusified?」我不知道薩拉佩林是這樣的! +1 – 2010-11-19 05:16:46

+1

你好!其實,我從來沒有找到這個詞的正確用法。 :P – Andrew 2010-11-19 05:20:47

+0

非常感謝,但是我確實有問題。我從服務器提取DLL使用在這裏找到的方法:http://serverfault.com/questions/139703/extracting-a-sqlclr-assembly - 但是,當我在反射器中打開,它說:「對象引用未設置到一個對象的一個​​實例。「它打開了我編譯好的任何其他.NET程序集。有任何想法嗎? – Dane 2010-11-19 06:32:25

0

將組件解壓縮到一個DLL後,可以使用開源ILSpy對其進行反編譯。在編譯時您將無法看到所有編譯器選項,也無法看到源代碼是如何分解爲單獨的文件的。不過,你會看到足夠的能夠創建一個Visual Studio項目,創建Properties\AssemblyInfo.cs文件,添加引用等,以便您可以正確地添加它以便源代碼管理,然後開始編輯它。