1

我有一个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 上的目标是 .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编译器找不到任何命名空间?

4

5 回答 5

3

如果您创建的是网站而不是 webApplication,则需要将.cs文件放在特殊~/App_Code文件夹中并将它们部署在服务器上。请阅读 MSDN 上的网站和预编译 Web 应用程序之间的区别:http: //msdn.microsoft.com/en-us/library/dd547590.aspx

于 2013-07-05T21:02:50.483 回答
1

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

于 2013-07-05T21:38:14.807 回答
1

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

gacutil.exe -i "程序集路径.dll"

于 2013-07-05T21:07:19.677 回答
1

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

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

于 2013-07-05T20:55:35.233 回答
1

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

于 2015-09-02T00:23:07.097 回答