[英]ASP.Net MVC can't find a namespace that is not included in the controller
[英]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.