2009-04-15 134 views
6

更新:所有這些問題都是爲了將​​網站應用程序轉換爲Visual Studio中的Web項目。一旦我挖了,我找到了解決方案,正如我在下面標記爲答案。C#:如何將網站項目轉換爲Web項目

基本上,如果您要將您的網站項目升級/移動到Web項目,您將遇到許多錯誤。下面的答案是簡短的方法。謝謝大家的意見和幫助。

老問題和標題低於:

如何包裝命名空間XX {}所有的類文件?

如何將命名空間封裝到webproject(或任何項目)中的所有代碼隱藏文件?

namespace MyDomain 
{ 
    // regular code here 
} 

長話短說...

我一直在轉換這是海外外包項目。僅在'web'項目中就有超過20,000個文件,用於這樣一個簡單的網站(搖頭)。它是使用VB.NET和C#編寫的vs2005(是的,兩個complilations)。它最初是一個網站應用程序。我已將其轉換爲Web應用程序,主要是因爲您發佈時生成的8,000個「臨時」程序集。

好吧,我轉換到VS2008。我已將所有代碼轉換爲C#。看起來不錯。我已將所有特殊的App_Code/VB和C#代碼引入獨立程序集。

現在,當我嘗試重新編譯時,我會收到大量錯誤的警報。我通過將代碼隱藏文件包裝到名稱空間中,並更新usercontrol以使用新的名稱空間來解決這些問題。

但是... 5000+錯誤去...幫助!

alt text http://eduncan911.com/blog/thumbnail/4-15-2009.6-00-13.PM.png

也許有另一種方式?以下是代碼隱藏的示例代碼片段:

public partial class MyHomepage_MyStuff_MyPosts : SecurePage 
{ ... } 

請注意類名MyHomepage_MyStuff_MyPosts。這是/MyHomepage/MyStuff/MyPosts.aspx文件位置的目錄路徑。

錯誤是代碼隱藏文件無法找到正在使用的控件的引用。如:

ctl_website_rpt.RowCount = _totalCount; 

這是一個控制(其命名約定)名爲「ctl_website_rpt」 ASPX文件內。 aspx頁面在標題中有:

<%@ Page Title="My Posts" Language="C#" 
    MasterPageFile="~/MasterPages/Main.master" AutoEventWireup="true" 
    CodeFile="MyPosts.aspx.cs" 
    Inherits="MyHomepage_MyStuff_MyPosts" %> 

也許有一種方法可以在其他地方引用此頁?沒有改變它的命名空間?

namespace Website.MyHomepage.MyStuff 
{ 
    public partial class MyPosts 
    { ... } 
} 

<%@ Page Title="My Posts" Language="C#" 
    MasterPageFile="~/MasterPages/Main.master" AutoEventWireup="true" 
    CodeFile="MyPosts.aspx.cs" 
    Inherits="Website.MyHomepage.MyStuff.MyPosts" %> 

回答

4

Fyi,我找到了解決方案。這比你想象的容易。

您只需右鍵單擊您的新Web項目,並有「轉換爲Web應用程序」選項。「這會做一些有趣的事情,首先,它會創建[file] .aspx.designer.cs自動生成的文件,這消除了99%的錯誤,因爲代碼隱藏無法找到對控件的引用(見截圖在我的問題上)。

這也重新寫<%@頁%> decleration在你的aspx文件,以從代碼繼承背後的新名稱/命名空間。

所以,剩下的是一些集引用問題和做

該怎麼是:

1)創建一個新的Web項目,複製從舊網站項目到新Web項目的所有文件。

2)修復你知道你需要的所有組件的引用。

3)右鍵單擊Web應用程序並選擇轉換爲Web應用程序。仔細檢查錯誤和警告日誌。一旦你解決問題,隨時重新轉換。

如果任何aspx或ascx文件沒有designer.cs文件,則該文件轉換失敗。修復引用,命名空間等並重新轉換。

提示#1:確保在轉換爲Web應用程序之前添加了所有引用。有時會發生一些錯誤。

提示#2:即使它看起來完成,轉換後查找錯誤。它會指向你無法轉換的文件,所以你需要處理它們。

提示#3:您可以重新轉換任何子目錄或任何文件,任意次數。假設你在#2中有多個錯誤需要修復,你可以多次重新轉換該文件或目錄,直到你修復它。重新轉換不會損害現有的應用程序。

1

我想不出一個解決方案,而不是寫一個小的控制檯應用程序,它會通過所有的文件併爲你修改它們。

+0

這是一個想法。希望在另一個解決方案(更詳細地更新問題)。 – eduncan911 2009-04-15 22:21:12