【发布时间】:2015-02-23 21:47:34
【问题描述】:
我有一组用于 Web 应用程序的 C# 文件,这些文件是从一个已不在身边的开发人员那里继承而来的。我在 Visual Studio 2010 中创建了一个解决方案,并将现有文件和子文件夹从源代码管理添加到解决方案中。我创建的其中一个子文件夹称为 App_Code,它模仿了我们的源代码控制程序中存在的一个子文件夹。在这个子文件夹中有一些 C# 类。这些类在根目录的代码隐藏文件(例如 ActionPage.aspx.cs: )中被引用,但没有任何代码隐藏文件可以在 App_Code 中找到这些类。我收到通常的错误消息,“找不到类型或命名空间 'ErrorLogger' [其中一个类](您是否缺少指令或程序集引用?)” App_Code 子文件夹看起来不像常规文件夹。我正在附上一个显示它的样子的剪辑:
。
我怀疑这是一个特殊的 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 解决方案,然后选择了文件->添加->现有网站。我现在将代码放在网站而不是 Web 应用程序中,但它确实可以编译和运行。没有重新构建整个事情,我认为这是我能做的最好的 - 除非有人有任何其他建议......而且我非常感谢所有建议,伙计们,相信我。在一个相关主题上,为什么 File->New->Project from Existing Code 没有给我 Web 应用程序的选项?雷德蒙德,如果你在听,请添加!
【问题讨论】:
-
类在哪些命名空间中?您看不到它们的原因很可能是命名空间问题。
-
如果您不熟悉如何查找命名空间或默认命名空间然后右键单击项目中的
AAT并选择属性查看 -
看起来你的类没有命名空间,所以它只能被项目中没有命名空间声明的其他类访问。
-
您是否尝试过对解决方案进行清理/构建?
-
你不需要“需要”命名空间来让你的应用程序工作,它只是更好地工作。您提到您创建了 App_Code 目录。使用旧版本的 Visual Studio 有时会出现问题。您是否尝试过将课程移至基层以查看它是否在那里工作?
标签: c# asp.net visual-studio-2010