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编译器找不到任何命名空间?
如果您创建了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的默认行为。在任何情况下,当您发布网站时,都必须发布整个网站。这意味着一切。发布过程必须包括从根目录到输出的所有内容。如果向子文件夹中的网页添加依赖项,则必须将该依赖项添加到网站,即根文件夹中的整个网站。