我有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编译器找不到任何命名空间?
答案 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的默认行为。无论如何,当您发布网站时,您必须发布整个网站。这意味着一切。发布过程必须包括从根目录开始的所有内容。如果向子文件夹中的网页添加依赖项,则必须将依赖项添加到网站,将整个网站添加到根文件夹。