4

我不确定这是一个错误还是其他什么。

我在 VS2010 中创建了一个新的 Web 应用程序项目。在项目中,我新建了一个类(Class1),内容如下:

public void Test()
{
    var s = "Hello";
    Console.WriteLine(s);
}

当我将鼠标悬停s在 Console.WriteLine(s) 行上时,会出现一个显示 (local variable) string s. 太好了,正如我所料。

正确显示 s 为字符串类型

现在,我将一个App_Code文件夹添加到项目中。在其中,我再次创建了一个新类(Class2),其内容完全相同(类名除外)。现在,当我悬停时s,它会显示(local variable) var s

错误地将 s 显示为 var 类型

为什么它显示var而不是string?这是一个错误吗?你能重现这种行为吗?

情况更糟。如果我将 Class2.cs 从 App_Code 文件夹移动到项目的根目录,VS2010 仍然不显示类型。即使重新启动 VS2010 并重新打开项目,VS2010 也会在 Class1 中显示正确的类型,但在 Class2 中不会。我也试过删除.suo.csproj.user文件,但仍然没有区别。显然 VS2010 在某处缓存了这些信息。

4

2 回答 2

0

我认为这是由于App_Code文件夹而发生的。因为App_Code文件夹是在运行时编译的。正如 MSDN 在这里描述的那样。

在网站项目中,您可以将源代码存储在 App_Code 文件夹中,它会在运行时自动编译。Web 应用程序中的任何其他代码都可以访问生成的程序集。因此,App_Code 文件夹的工作方式与 Bin 文件夹非常相似,只是您可以在其中存储源代码而不是编译后的代码。App_Code 文件夹及其在 ASP.NET Web 应用程序中的特殊状态使得创建自定义类和其他仅源代码文件并在 Web 应用程序中使用它们成为可能,而无需单独编译它们。

这是 MSDN 链接

于 2012-05-06T18:19:53.670 回答
0

App_Code 目录是网站项目的特殊目录。

在 Web 应用程序项目中,放置在 App_Code 目录中的代码会被 VS 忽略。

在将网站迁移到 Web 应用程序项目时,我注意到了这种行为。

于 2012-05-06T18:48:03.627 回答