繁体   English   中英

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

[英]ASP.NET compiler can't find any namespace

我有一个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'(您是否缺少using指令或程序集引用?)

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

但他们中的任何一个都没有运气。

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

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

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

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编译器找不到任何名称空间?

如果创建的是WebSite,而不是webApplication,则需要将.cs文件放入特殊的~/App_Code文件夹中,然后将其部署在服务器上。 请阅读有关网站和MSDN上预编译的Web应用程序之间的区别的信息: http : //msdn.microsoft.com/zh-cn/library/dd547590.aspx

LoL与您的网站不在同一个项目中吗? 如果是这样,则需要在您的网站项目中添加对该项目的引用。 在网站上,右键单击“引用”文件夹,然后单击“添加引用”,然后尝试再次构建。

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

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

gacutil.exe -i“ assemblypath.dll”

@Machinegon由于部署且出于管理目的。 除非是多个站点在服务器上使用的类,否则没有理由将网站的DLL部署到GAC。 即使被多个站点使用,最好在其bin文件夹中保留该站点已知的版本,否则注册新版本可能会破坏其他站点/应用程序。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM