ASP.NET 3.5网站在VS 2012中缺少名称空间

时间:2013-06-20 15:03:02

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

我遇到的问题与此问题非常相似: 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系统并修复它。我希望这个网站在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中正常加载。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我在asp.net MVC中发现了一个非常类似的问题。在我的情况下,我无意中复制了配置文件中的一个部分。

我认为这是

<system.web> 

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

答案 2 :(得分:0)

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

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

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

追踪他们可能是一种真正的痛苦。