現在正在搞三層開發,用ASP和VB6.0,但是現在苦於沒有找到合適的方法來調試自己寫的DLL文件,效率相當低。
我用了幾種方法:
1.在IIS中選擇卸載,然後用VB重新編譯,覆寫原來的DLL
2.在IIS中選擇一個你調試的站點,停止,然後編譯覆蓋,然後啟動,再在IE中刷新頁面。
3.在命令列執行Regsvr32.exe -u 檔案名稱然後編譯覆蓋刷新
但是上面的方法不總是湊效,我用Frontpage做ASp頁面的時候沒有什麼問題,但使用InterDev的時候總是報告DLL檔被鎖定,不能覆蓋的錯誤。有的時候把InterDev關掉(或只是關掉裡面所有正在編輯的文件),也能湊效,但不是總是這樣。
我想用InterDev做開發,比較方便,但找不到更好的方法。
這個問題困擾我好久了,我想大家做組件開發的都有這個迷惘
-------------------------------- --------------------------------
我今天下午試了一下下面的方法不知道會不會讓大家笑話,但是我真的解決了問題了並且今天一下午都自我感覺良好不過我用的是.NET的開發環境具體如下:
1.安裝.NET,當然這個對系統的資源耗費很大,安裝以後普通的機子會運作得很慢,如果你的自願比較緊張還是放棄這個方法吧。 (後來我發現在frontpage下和interdev下也可以實現,哈哈。不要埋怨,因為我的話而裝了一個.net卻發現沒有多少用處,但是我用過之後卻是愛上他了。)
2.建立一個存放DLL的資料夾。然後我們的最「出色」的地方體現出來了:在這個資料夾下建立若干個空的子資料夾命名從01開始到你希望的數值為止。
3.啟動IIS管理器
4.打開VB6你的工程
5.現在如果你要調試的話可以直接編譯啦,然後任意指定一個第二步建立的資料夾,我想還是從01開始吧。
你刷新一下你調試用的ASP頁面,看見了嗎?內容已經是你寫的新的DLL檔案的
以上只是開機後第一次調試了。我在調試的過程中發現了不少錯誤,我總是這麼大意嗎?呵呵,但願你不是這樣的:)
現在我需要修改DLL了,修改完成後重新編譯,你發現你不能覆蓋剛才的DLL了,因為你已經在頁裡面調用了這個組件,他已經被放進內存,寫保護鎖定了。你需要在IIS管理器裡面把你的網站停掉.如果你用的是.net,你會發現這樣是可行的,但是其他的開發環境不一定和你想的一樣,現在你第二步建立的那些個資料夾們就會管用了,找其中的一個資料夾(該是02了...),把新的DLL放在這裡。然後啟動站點(不要讓他重啟,太慢了,以上步驟最簡潔的方法就是在IIS選中你的站點,按最有上角的█,然後▼)(我沒有找到▼,你只能把▼順時針旋轉30度讀了^_^)
怎麼樣?
問題解決了吧?
我推薦使用.net,因為使用它,你不需要和interdev一樣進行reference,只要直接在其中寫擴展名是ASP的頁面,然後代碼中每一個對像都用server.createobject("")的方法得到,他就會自動顯示你方才編譯過的最新的DLL中的類別的方法和屬性了。
如果你不想使用的codeinsight話我覺得frontpage也是很好的工具。
我的方法是不是很笨啊?
我不用VB.net或C#是因為我現在的工作是封裝程式碼而不是重新一個工程鑑於vbscript和.net中語法的差異,我還是選擇這個笨笨的方法了,並且自己認為VB寫DLL也許性能會更好一些,不是嗎?