2009-02-06 46 views
3

我有幾個爲我的web項目創建的類,我將它們存儲在App_Code文件夾中。我不想將所有類存儲在頂層(沒有命名空間),但想將它們組織到命名空間中。到目前爲止,這似乎不可能,因爲當我使用「使用XXXX」時命名空間聲明它仍然無法找到正確的類在我的代碼後面的文件。我可能做錯了什麼?將類組織到App_Code文件夾中的命名空間中,並不像預期的那樣工作

編輯:

所以,比如我有

namespace foo 
{ 
    public class bar 
    { 
    } 
} 

然後在頁面背後說我的代碼的Default.aspx我有

. 
. 
. 
using foo 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     bar NewBar = new bar(); 
    } 
} 

以上不爲我工作,我有使用

foo.bar NewBar = new foo.bar(); 

有沒有人有任何想法我做錯了?

編輯: 好的,所以我安裝了Visual Studio 2005 SP 1並試圖將其轉換爲Web應用程序而不是Web站點。仍然沒有運氣。

+0

您正在使用哪個版本的VS?這對我很有用 – 2009-02-06 15:09:34

+0

也適用於我的VS2008網站項目。 – 2009-02-06 15:26:12

+0

https://msdn.microsoft.com/library/aa983464(v=vs.100).aspx – MacGyver 2015-12-05 08:02:58

回答

1

我已經想通了。我真的很愚蠢。對不起,擔心。這是因爲我的命名空間和類名相同,所以無法區分並需要完全限定的名稱。只要我改變了類名,一切都按預期工作。

0

您是否嘗試過首先構建項目,然後嘗試「使用」它們?

3

最簡單的解決方案是將類放入類庫中,然後從您的網站項目中引用它。

1

有你把

namespace blah 
{ 
    ... 
} 

代碼文件?

1

您正在使用網站項目,而不是Web應用程序項目。網站項目可以即時編譯所有.cs文件(包括App_Code中的文件),以便您可以在Web服務器上更新它們,而無需重新編譯它們。它們被編譯成臨時dll,在正常情況下,它們不會被你看到(即沒有任何內容)。正如您發現的,在編寫Web站點項目時,您幾乎不能控制名稱空間。如果你希望更好的結構化代碼和更多的命名空間控制,然後convert it to a Web Application Project。您的服務器端代碼將被編譯爲一個dll文件並放入bin文件夾中。

11

(我猜在這裏)嘗試打開文件的屬性,並設置生成操作「編譯」。

0

我剛剛在VS2005中試過了你的確切代碼示例,它按照使用指令的預期工作,不需要首先構建網站或任何東西。

這告訴我,您的項目和/或名稱空間還有其他問題。如果您右鍵單擊並選擇「構建Web站點」,它會生成嗎?

當你說它不工作,它究竟以什麼方式不起作用?網站沒有建立?沒有智能完成?瀏覽到頁面時出現錯誤消息?

0

的「類」和選擇 - >「屬性」上單擊右鍵改變日的.aspx的「屬性」 TO->編譯和 「寫的命名空間名稱」

它工作正常。

相關問題