2009-03-03 118 views
3

我正在做一個aspx頁面來顯示代碼庫使用示例。可能顯示代碼頁面上代碼隱藏的實際源代碼

所以基本上,我想例如有: 說明 源代碼 按鈕 輸出(在DataGrid)

而不是複製,並從後面的按鈕將代碼粘貼到的aspx頁面顯示的目的,我認爲能夠在運行時讀取實際的源代碼並顯示它可能是很好的。除了光滑之外,這還會帶來額外的好處,確保顯示的源代碼是最新的,而如果有人進行更改並忘記使用新代碼更新aspx頁面,則副本和粘貼可能會過時。

我能想到2種可能的方法: 1)(kludgy) - 將代碼部署在文件後面,然後可以在運行時讀取代碼,並可以解析並顯示正確的功能代碼。 2)(首選)運行時反編譯DLL(如反射器那樣)並顯示代碼。

所以我知道如何做#1,但不知道關於#2(如果它甚至可能)。

回答

5

在運行時反編譯代碼不會產生與你寫的代碼完全相同的代碼。在這一點上,它變得更多的解釋。

第三個選項是讓您的應用程序在您的代碼庫中工作以檢索特定文件。然後你會在瀏覽器中顯示該文件的內容。它與選項1類似,但不會將.cs文件直接部署到服務器。

+0

+1從代碼存儲庫中檢索源代碼。 – 2009-03-03 17:48:27

0

如果要保留註釋和原始變量名稱,則反射不起作用。解析代碼可能是最直接的方法。也可能有一個從PDB文件中提取數據的選項。

3

閱讀實際的源文件是這裏的方式,海事組織 - 如果你真的,真的確定你不介意每個人都能夠看到你的服務器的源代碼。如果你使用類似Reflector的東西,你會失去所有的註釋,可能是局部變量,像迭代器塊這樣的東西會變得特別奇怪。

我有一個代碼格式化程序(作爲一個控件,事實上),我在C# in Depth web site上使用。這是相對原始的,但如果你願意,歡迎你。 (如果你想嘗試,你可以通過page on the site itself來使用它。)