ASP.NET编译器可以';找不到任何命名空间

本文关键字:找不到 任何 命名空间 NET 编译器 ASP | 更新日期: 2023-09-27 18:21:18

我有一个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:Project>添加现有文件>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.30119''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编译器找不到任何命名空间?

ASP.NET编译器可以';找不到任何命名空间

如果您创建了webSite而不是webApplication,则需要将.cs文件放在特殊的~/App_Code文件夹中,并将其部署在服务器上。请阅读MSDN上的网站和预编译的web应用程序之间的区别:http://msdn.microsoft.com/en-us/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的默认行为。在任何情况下,当您发布网站时,都必须发布整个网站。这意味着一切。发布过程必须包括从根目录到输出的所有内容。如果向子文件夹中的网页添加依赖项,则必须将该依赖项添加到网站,即根文件夹中的整个网站。