vs2008中建立b/s結構的項目有兩種類型,一種是web application,即web應用程式,另外一種是web網站,建立項目時如果選擇的不正確,在後續的開發過程中就不可避免的會遇到要修改項目類型的情況。經過在網上爆走以及測試,以下是解決asp.net應用程式改網站項目的方法及背景知識:
1.vs2008的項目類型是通過guid來確定的
在解決方案檔案中(.sln),用記事本開啟看的話可以看到Project("後面跟的是guid值,網站類項目的guid和應用程式類項目的guid值是不一樣的,我們可以隨便建立一個網站,然後把project("後面的guid值複製出來備用。
如果你的解決方案檔案中的值是Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"),那麼這就是一個應用程式類型的項目,網站類項目的值應該是:Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}"),我們要做的就是要把項目類型改成這個網站的guid值。
2.網站類項目比asp.net應用程式項目多出來一些參數值
網站類項目在解決方案檔案中多出來一些虛擬路徑以及編譯方面的參數資訊,應用程式類項目沒有這些內容,所以我們還是要建立一個空的網站項目,將以下內容複寫到原來的應用程式項目的參數下:
ProjectSection(WebsiteProperties) = preProject
TargetFramework = "3.5"
Debug.AspNetCompiler.VirtualPath = "/WebSite1" ----------------------->這裡需要改
Debug.AspNetCompiler.PhysicalPath = "./XinRong_Steel_Tube/" ----------------------->這裡需要改
Debug.AspNetCompiler.TargetPath = "PrecompiledWeb/WebSite1/" ----------------------->這裡需要改
Debug.AspNetCompiler.Updateable = "true"
Debug.AspNetCompiler.ForceOverwrite = "true"
Debug.AspNetCompiler.FixedNames = "false"
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.VirtualPath = "/WebSite1" ----------------------->這裡需要改
Release.AspNetCompiler.PhysicalPath = "./XinRong_Steel_Tube/" ----------------------->這裡需要改
Release.AspNetCompiler.TargetPath = "PrecompiledWeb/WebSite1/" ----------------------->這裡需要改
Release.AspNetCompiler.Updateable = "true"
Release.AspNetCompiler.ForceOverwrite = "true"
Release.AspNetCompiler.FixedNames = "false"
Release.AspNetCompiler.Debug = "False"
VWDPort = "1271"
DefaultWebSiteLanguage = "Visual C#"
EndProjectSection
3. 應用程式類項目需要確定.csproj專案檔,但是網站類項目只需要提供路徑
仔細觀察應用程式項目的參數,如下面的形式:
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DAL", "DAL/DAL.csproj"
再對比觀察網站項目的參數,是這樣的:
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "DAL", "./XinRong_Steel_Tube/"
很明顯,然後guid值不同外,一個是指定.csproj檔案路徑的,一個是指出網站的根目錄路徑的,所以我們還需要改一下這個地方。
4.刪除所有的*.designer.cs檔案,替換所有的*.aspx檔案中的codebehind=為codefile=,注意大小寫,我沒有開發環境,依稀記的是這兩個關鍵字,但是大小寫肯定不是這樣的。
最後,重新載入解決方案即可。