ASP.NET编译器找不到任何命名空间

时间:2013-07-05 20:50:13

标签: c# asp.net visual-studio-2008 namespaces

我有foo.cs个文件

namespace LoL
{
    public class testing2
    {

    }
}

并在

Default.aspx.cs档案:

更新:我不知道它是否真的有用,但这里有Default.aspx.cs个文件:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using LoL;

namespace WebApplication4
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

我得到了:

  

编译器错误消息:CS0246:类型或命名空间名称'LoL'   无法找到(您是否错过了使用指令或程序集   引用?)

对于我尝试使用的任何课程。不仅仅是图书馆。我尝试了几种移动/复制文件的解决方案,在VS:Porject>添加现有文件> foo.cs等

但其中任何一个都没有运气。

如何解决这个问题?我不知道如何解决这个问题。

注意:如果我尝试在VS中使用F5模式,它可以正常工作,但是将网站放在C:\inetpub\wwwroot\上会在主机中出现此错误。

编辑:通过ASP.NET页面上的错误消息,我可以看到IIS正在调用C#编译器4.0,但我的目标是在我的VS 08上使用.NET framework 3.5(最新版本可用于VS 08)。这可能与我的问题有关系吗?

EDIT2:我能够成功地从命令行编译我的网站项目。在项目路径上使用msbuild程序。当IIS尝试编译它时,它不起作用。 IIS不知道foo.cs文件。

EDIT3:现在我正在使用aspnet_compiler(在cmd.exe中)程序:

  

C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_compiler -v webApplication4

路径:C:\inetpub\wwwroot\webApplication4

我得到同样的错误。所以,我查看了Visual Studio配置文件,它是.csproj文件,我正在寻找编译器传递的包含文件(由VS生成)。

我在ItemGroup标记上找到了它们:

  <ItemGroup>
    <Compile Include="foo.cs" />
    <Compile Include="Default.aspx.cs">

如您所见,foo.cs包含在内。所以,文件就在那里。为什么aspnet编译器找不到任何命名空间?

5 个答案:

答案 0 :(得分:3)

如果您创建了webSite而不是webApplication,则需要将.cs文件放在特殊的~/App_Code文件夹中并将其部署在服务器上。请阅读MSDN上网站与预编译Web应用程序之间的差异:http://msdn.microsoft.com/en-us/library/dd547590.aspx

答案 1 :(得分:1)

LoL是否与您的网站不同?如果是这样,您需要在网站项目中添加对该项目的引用。在网站中,右键单击References文件夹,然后单击“添加引用”并尝试重新构建。

如果这不起作用,您的LoL项目可能不会设置为构建。在构建输出中验证它是否正在构建。如果不是,则需要查看构建配置并验证当前活动配置是否已设置为构建。

答案 2 :(得分:1)

尝试使用gacutil.exe在GAC中复制已编译的类库。打开VS命令提示符,然后键入:

gacutil.exe -i“assemblypath.dll”

答案 3 :(得分:1)

@Machinegon由于部署和管理目的。除非在服务器上使用多个站点的类,否则没有理由将Web站点的DLL部署到GAC。即使被多个站点使用,最好让站点的版本与其bin文件夹兼容,否则注册新版本可能会破坏其他站点/应用程序。

答案 4 :(得分:1)

我知道这是一个老线程,但这是一个常见的问题。请注意以下事项。 您的网站中不能有多个bin目录。 bin目录必须位于您网站的根文件夹中。您不能拥有包含bin目录的子目录。通常,人们会使用新项目在Visual Studio中创建网页,然后他们会将该网页发布到其网站的子目录中。发布网页时,新的bin文件夹将放在该子目录中。 bin目录没用,任何东西都不会引用。子文件夹中的网页将尝试在位于网站根目录的bin目录中查找任何依赖项。 这很可能是由服务提供商设置的,或者它可能只是IIS / ASP.net的默认行为。无论如何,当您发布网站时,您必须发布整个网站。这意味着一切。发布过程必须包括从根目录开始的所有内容。如果向子文件夹中的网页添加依赖项,则必须将依赖项添加到网站,将整个网站添加到根文件夹。