2013-12-19 56 views
3

我想通過向它添加一個新類來修改現有的.net「網站」項目。我在App_Code文件夾中添加了我的類(讓我們稱這個類爲「ClassA」),並嘗試從aspx.cs文件的外部訪問它。出於某種原因,在創建類之後,我可以在aspx.cs文件中創建它的一個實例,而不需要Visual Studio的任何警告(例如,ClassA a = new ClassA())。但每次重建項目時,我都會從visual studio中得到以下錯誤(無法找到類型或名稱空間名稱'ClassA'(您是否缺少using指令或程序集引用?))。我在這裏錯過了什麼?Visual Studio無法檢測到新創建的類爲asp.net「網站」

代碼A類 - > App_Code文件/ ClassA.cs

public class ClassA 
{ 
    public string test; 
} 

代碼Test.aspx.cs

namespace A{ 
    public class Test : System.Web.UI.Page 
    { 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     ClassA a = new ClassA(); // line with error 
    } 
    } 
} 

如果我把一切都放在Test.aspx.cs我沒有得到任何錯誤:

namespace A{ 
    public class ClassA 
    { 
    public string test; 
    } 

    public class Test : System.Web.UI.Page 
    { 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     ClassA a = new ClassA(); // no error! 
    } 
    } 
} 
+0

您是否修改了ClassA?的名稱空間,因爲默認情況下它會在名稱空間中追加文件夾名稱(.App + Code)。 –

+0

它是一個網站*或網站*項目*嗎?一個網站不是真正編譯時(無輸出DLL),而Web項目是(單個輸出DLL)。如果它是一個Web項目,並且你已經在App_Code中獲得了代碼,那麼它會導致你有兩次類(一旦從App_Code編譯運行時,再次編譯DLL)。 – Luaan

+0

它是一個網站 – Discombobulous

回答

5

默認情況下,內部App_Code文件夾類已財產「生成操作」設置爲「內容」。

如果你想使用它,你需要設置其「生成操作」屬性設置爲「編譯」。

這應該工作。

+0

嗨,我不確定這是否是解決問題的解決方案,但我嘗試了一些在本主題中提出的建議(此解決方案是我嘗試的最後一件事),現在它可以工作。謝謝。 – Discombobulous

+0

Eric @沒有其他需要。你的命名空間和代碼很好。 –

3

我真的很抱歉,因爲我無法完全理解這個問題。 在我看來當你在app_code中創建一個類時,不應該使用名稱空間,並且讓它可以被整個網站項目訪問。
在這種情況下,你已經添加了一個命名空間,試着加入:其中B是你的命名空間你在新的課堂上使用

using b; 

。這應該可以解決你的問題。

+0

所以我刪除了App_code中類定義文件中的名稱空間。我仍然在app_code之外的aspx.cs文件中發現同樣的錯誤(無法找到類型或名稱空間名稱'ClassA') – Discombobulous

+0

@EricChen請用您當前使用的代碼更新您的問題。 – mason

相關問題