2015-02-23 58 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将以不同方式处理此文件夹中的类。类的属性的构建操作被设置为“内容”。您需要单击属性将其更改为“编译”。

相关问题