2015-02-23 16 views
1

我有一組C#文件,用於Web應用程序,我從一個不再處於開發中的開發人員繼承。我在Visual Studio 2010中創建了一個解決方案,並將現有文件和子文件夾添加到源代碼管理解決方案中。我創建的一個子文件夾稱爲App_Code,它模仿我們的源代碼管理程序中存在的子文件夾。這個子文件夾裏面有幾個C#類。這些類在代碼中位於根文件後面的代碼中引用(例如,ActionPage.aspx.cs:),但是沒有任何文件後面的代碼可以在App_Code中找到這些類。我得到了通常的錯誤消息,「找不到類型或命名空間'ErrorLogger'[其中一個類](缺少指令或程序集引用?」)App_Code子文件夾看起來不像常規文件夾。我附上一個剪輯,顯示它的外觀:C#.Net中的子文件夾中的類Visual Studio項目不被代碼隱藏在文件後面

What App_Code subfolder looks like in Visual Studio

我懷疑這是一個特殊的Visual Studio文件夾名稱。下面是ActionPage的代碼的呼喚ErrorLogger(並給上面列出的錯誤消息)的例子:

ErrorLogger Err = new ErrorLogger(); 

而這裏的ErrorLogger類的樣子:

using System; 
using System.IO; 
using System.Text; 

public class ErrorLogger 
{ 

public void Logger(string sPathName, string sErrMsg) 
{ 
    //- <--custom date time stamp & format for easy reading 
    string sLogFormat = DateTime.Now.ToShortDateString().ToString() + " " + DateTime.Now.ToLongTimeString().ToString() + " ==> "; 
    string sYear = DateTime.Now.Year.ToString(); 
    string sMonth = DateTime.Now.Month.ToString(); 
    string sDay = DateTime.Now.Day.ToString(); 
    //string sErrorTime = sYear+sMonth+sDay; 
    string sErrorTime = sMonth + sDay + sYear; 
    //- <--Write error to a file 
    StreamWriter sw = new StreamWriter(sPathName + sErrorTime, true); 
    sw.WriteLine("------------------------------------------------------------------------------------------------"); 
    sw.WriteLine(sLogFormat + sErrMsg); 
    sw.Flush(); 
    sw.Close(); 
} 

}

我錯過了什麼?

已添加2015年2月24日:我發現了一個不太令人滿意的解決方案:我創建了一個新的VS 2010解決方案,然後選擇File-> Add-> Existing Web Site。我現在有一個網站代碼,而不是一個Web應用程序,但它編譯並運行。我認爲這是我能做的最好的事情 - 除非任何人有任何其他建議....並且我非常感謝所有的建議,夥計們,相信我。在一個相關主題上,爲什麼文件 - >新建 - >來自現有代碼的項目沒有給我一個Web應用程序的選項?雷蒙德,如果你在聽,補充一點!

+2

這些類中的命名空間是什麼?你無法看到它們的原因很可能是命名空間問題。 – 2015-02-23 21:53:58

+0

查看如何使用'namespace',如果您不熟悉如何查找名稱空間或默認命名空間,那麼將使您的生活變得輕鬆許多,或查看如何在您的類聽衆中使用'using'子句/語句點擊項目中的「AAT」並選擇屬性以查看 – MethodMan 2015-02-23 21:54:12

+0

它看起來不像你的類有一個名稱空間,所以它只能被項目中沒有名稱空間聲明的其他類訪問。 – Claies 2015-02-23 21:54:59

回答

0

在你的頁面添加

using ErrorLogger; 

參考。

+0

我試過了,但是使用語句給了我相同的「類型或名稱空間...」錯誤消息。 – Melanie 2015-02-23 21:53:23

0

的文件夾添加到您的使用指令在執行文件的頂部,就像這樣:

using AAT.App_Code; 
+0

當我嘗試時,該行的App_Code部分給我提供了相同的「類型或名稱空間....」錯誤消息。 – Melanie 2015-02-23 21:54:40

+0

@Melanie那是因爲你似乎沒有使用'namespace'這兩個提供的答案都不能解決你的問題。 – MethodMan 2015-02-23 21:56:20

1

從項目中移除文件。

右鍵單擊該項目並選擇「添加新項...」

選擇Class並命名新類ErrorLogger。

粘貼在現有的代碼中。

+0

沒有,沒有快樂。我很難過。 – Melanie 2015-02-24 16:28:22

+0

你說你創建了一個新的項目,但隨後添加了來自源代碼控制的文件。這可能已經搞亂了項目文件。我會嘗試創建一個新項目,然後在不使用源代碼控制的情況下複製這些文件。 – 2015-02-24 18:13:49

+0

Steve,我已經完成了你所建議的檢查從源代碼控制文件到我的解決方案文件所在的不同文件夾,然後使用Windows資源管理器複製應用程序文件,選擇顯示所有文件,然後在項目中包含文件。我在複製之前刪除了所有源控制特定的文件。但我仍然無法編譯。但是,今天將ErrorLogger移動到根目錄是行得通的,所以這已經解決了,但我也注意到文件後面的代碼沒有看到相應aspx文件中的控件。 ?? – Melanie 2015-02-24 21:34:48

0

我剛剛發現this link;我認爲這解釋了我所看到的行爲。看起來這最初是一個網站項目而不是一個Web應用程序。無論如何,正如我在上面評論中指出的那樣,我可以將類文件從App_Code文件夾移動到根目錄,並且它們可以很好地編譯。感謝大家的幫助!

0

當您添加文件夾名稱App_Code時,Visual Studio將以不同方式處理此文件夾中的類。類的屬性的構建操作被設置爲「內容」。您需要單擊屬性將其更改爲「編譯」。

相關問題