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