【问题标题】:ASP.NET 3.5 Website missing namespaces in VS 2012VS 2012 中的 ASP.NET 3.5 网站缺少命名空间
【发布时间】:2013-06-17 12:26:15
【问题描述】:

我有一个与这个问题非常相似的问题: ASP.NET 3.5 Web Site stopped importing System namespace by default

我在 VB.NET 中有一个 ASP.NET 3.5 网站(不是应用程序)项目,它可以很好地编译 Visual Studio 2008。当我在 Visual Studio 2012(或 2010)中打开项目时,我遇到了一些非常奇怪的错误看起来好像缺少 System 和 System.Data 命名空间。在大多数情况下,所有这些错误都发生在 App_Code 文件夹中。在某些情况下,我可以在类中添加一个 Imports System 并修复它。我希望这个网站能在我在 VS 2012 中打开后立即编译。

这是我遇到的错误的示例:

  • CommandType 未声明。由于其保护级别,它可能无法访问。
  • DateTime 未声明。由于其保护级别,它可能无法访问。
  • HttpContext 未声明。它可能无法访问,因为它 保护级别。

我相信 VB.NET 确实做了一些隐式导入,但似乎我错过了它们。

编辑:该站点在 IIS 中运行良好,不会产生任何编译错误。

我的 web.config 文件的编译标签如下:

<compilation defaultLanguage="vb" debug="true" batch="false">
        <assemblies>
            <add assembly="System.Runtime.Serialization.Formatters.Soap, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Data.Entity.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        </assemblies>
        <buildProviders>
            <add extension=".edmx" type="System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider"/>
        </buildProviders>
    </compilation>

我尝试添加 System 和 System.Data 但没有帮助。它应该从 C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG 中的 web.config 文件中的默认程序集中提取。正如我之前所说,同样的解决方案(即使它是一个网站项目)在 VS 2008 中构建。

编辑:

我已将其缩小到我的 BIN 文件夹中的几个 DLL,每个 DLL 都会导致此错误(如果我将其中一个添加回来,错误会再次出现)。麻烦的 DLL 之一是 Recaptcha.dll。这个 DLL 没有什么特别之处,它在 VS2008 中运行良好,在 IIS 中也能正常加载。

【问题讨论】:

  • VS2012 起初为我的 VS2010 MVC 项目工作,然后完全搞砸了我的一堆文件。我用谷歌搜索了它,当时有一些错误尚未修复。我不建议使用它。
  • 将您的 app_code 文件夹重命名为其他名称。 VS 2010 和 VS2012 不再喜欢在该文件夹中包含用户代码。
  • 我在 2010 年对 App_Code 没有任何问题,但那是一个网站项目。我只是在尝试升级到 Web 应用程序项目时收到您提到的错误。
  • 这是一个网站项目,而不是一个 Web 应用程序项目。我无法将文件移到 App_Code 之外,因为它们不会编译。我有另一个网站项目,我升级到 Visual Studio 2012(仍然是 .NET 3.5)并且运行良好。然而那是 C#。我希望这个项目保留为网站项目。
  • 不使用网站“项目”的另一个原因

标签: asp.net vb.net visual-studio-2012 asp.net-3.5


【解决方案1】:

我已经多次遇到这个问题。事实证明,我们在应用程序代码(类对象)中犯了一些 IDE 不喜欢的小错误,但编译器会编译并运行而不会出错。很多时候我们做一个方法签名,比如:

 Public Sub Foo (byval Parm1 as long, _
      byval Parm2 as long,
      byval Parm3 as long)

我们忘记了一个“_”,就像我上面的 Parm2 示例一样。

追踪它们真的很痛苦。

【讨论】:

    【解决方案2】:

    我在 asp.net MVC 中发现了一个与我的观点非常相似的问题。就我而言,我无意中在配置文件中复制了一个部分。我认为是

    <system.web> 
    

    导致 Visual Studio 各种混乱的部分 - 编译工作正常,但我在错误列表中收到不寻常的错误。可能是类似的东西吗?检查您的 web.config 和您的视图 web.config 文件是否有任何重复的部分?

    【讨论】:

      【解决方案3】:

      您的网站项目中是否引用了 Web 服务?当对 web 服务的引用包括 web 服务中的所有类型时,我遇到了问题。这是因为在服务引用设置上选中了“在引用的程序集中重用类型”复选框。

      【讨论】:

      • 我认为这也可能是问题所在,但事实并非如此。我将尝试开始一个新项目,看看是否可以复制。
      猜你喜欢
      • 2012-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-07
      • 1970-01-01
      • 2013-04-08
      • 2018-02-02
      相关资源
      最近更新 更多