現在正在搞三層開發,用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也許性能會更好一些,不是嗎?
新聞熱點
疑難解答