7

我有一个与这个问题非常相似的问题: ASP.NET 3.5 Web Site stop 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 中加载良好。

4

3 回答 3

0

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

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

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

追踪它们可能真的很痛苦。

于 2013-10-30T12:56:39.243 回答
0

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

于 2013-07-01T14:25:06.853 回答
0

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

<system.web> 

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

于 2013-07-03T14:47:10.730 回答