Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 将类组织到App_Code文件夹中的命名空间中未按预期工作_Asp.net_Visual Studio - Fatal编程技术网

Asp.net 将类组织到App_Code文件夹中的命名空间中未按预期工作

Asp.net 将类组织到App_Code文件夹中的命名空间中未按预期工作,asp.net,visual-studio,Asp.net,Visual Studio,我有几个为我的web项目创建的类,我将把它们存储在App_Code文件夹中。我不想将所有类都存储在顶层(没有名称空间),而是想将它们组织到名称空间中。到目前为止,这似乎是不可能的,因为当我使用“using XXXX;”namespace语句时,它仍然无法在代码隐藏文件中找到正确的类。我可能做错了什么 编辑: 比如我有 namespace foo { public class bar { } } 然后在default.aspx的代码隐藏页面中 . . . using fo

我有几个为我的web项目创建的类,我将把它们存储在App_Code文件夹中。我不想将所有类都存储在顶层(没有名称空间),而是想将它们组织到名称空间中。到目前为止,这似乎是不可能的,因为当我使用“using XXXX;”namespace语句时,它仍然无法在代码隐藏文件中找到正确的类。我可能做错了什么

编辑:

比如我有

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();
有人知道我做错了什么吗

编辑:
好的,我已经安装了VisualStudio2005SP1,并尝试将其转换为Web应用程序,而不是网站。仍然不走运。

您是否尝试过首先构建项目,然后尝试“使用”它们?

最简单的解决方案是将类放在类库中,然后从您的网站项目中引用它。

您放了吗

namespace blah
{
   ...
}

在代码文件中?

您使用的是网站项目,而不是Web应用程序项目。网站项目动态编译所有的.cs文件(包括App_代码中的文件),这样您就可以在Web服务器上更新它们,而无需重新编译它们。它们被编译成临时DLL,在正常情况下,您将看不到这些DLL(即bin中没有任何内容)。正如您所发现的,在编写网站项目时,您对名称空间几乎没有控制权。如果您希望更好的结构化代码和对名称空间的更多控制,那么。您的服务器端代码将被编译成dll并放在bin文件夹中。

(我在这里猜测)尝试打开文件的属性并将生成操作设置为“compile”。

我刚刚在VS2005中尝试了您的确切代码示例,它与预期的using指令一起工作,无需先构建站点或其他任何操作

这说明您的项目和/或名称空间还有其他问题。如果您右键单击并选择“构建网站”,它会构建吗


当你说它不起作用时,它究竟在什么方面不起作用?该站点是否未构建?没有智能感知完成?浏览页面时出现错误消息?

我已经找到了。我真的很笨。很抱歉让你担心。这是因为我的命名空间和类名相同,所以它无法区分,需要完全限定的名称。一旦我更改了类名,一切都按预期进行。

右键单击“类”并选择->“属性”,将“属性”更改为->编译并编辑 在th.aspx上“写入名称空间名称”


它工作正常。

不正确。我有一个web项目,在app_code文件夹中有名称空间的类。这绝对不是事实。我可以进入类,但当我使用xxxx时;然后在我的课堂上,我有类似xxxx newxxxx=newxxxx()的东西;那不行。我仍然需要在名称空间前面加上前缀,使其像xxxx.xxxx newxxxx=newxxxx()那样工作;行得通。我真的不知道他们必须先建造。对于没有任何名称空间的其他类,它们可以直接使用。只有当我尝试将它们组织到名称空间中时才会这样做。您使用的是哪个版本的VS?这对我也适用,在VS2008网站项目中。卸载项目,然后编辑csproj文件,然后查看此处以查看您的项目类型:我现在无法测试。我刚刚开始安装VS2005SP1,以获得一些海报建议的web应用程序支持。当我发现它不起作用时,我的意思是intellisense首先显示名称空间,然后是类。尽管事实上我已经用过了。如果我强制编译=>编译器错误
 using namespace name of the class;