この質問に非常によく似た問題があります: ASP.NET 3.5 Web サイトは、既定でシステム名前空間のインポートを停止しました
VB.NET に ASP.NET 3.5 Web サイト (アプリケーションではない) プロジェクトがあり、Visual Studio 2008 を正常にコンパイルできます。Visual Studio 2012 (または 2010) でプロジェクトを開くと、非常に奇妙なエラーが表示されます。 System および System.Data 名前空間がありません。ほとんどの場合、これらのエラーはすべて App_Code フォルダーで発生しています。場合によっては、クラスにインポート システムを追加すると、問題が修正されます。この Web サイトは、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 ファイルの既定のアセンブリから取得する必要があります。前に述べたように、これと同じソリューション (Web サイト プロジェクトですが) は VS 2008 でビルドされます。
編集:
これを BIN フォルダー内の複数の DLL に絞り込みましたが、それぞれが個別にこのエラーを引き起こしています (そのうちの 1 つを再度追加すると、エラーが再び表示されます)。問題のある DLL の 1 つは Recaptcha.dll です。この DLL について特別なことは何もなく、VS2008 で正常に動作し、IIS で正常にロードされます。