7

この質問に非常によく似た問題があります: 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 で正常にロードされます。

4

3 に答える 3

0

Web サイト プロジェクトに Web サービスへの参照がありますか? Web サービスへの参照に Web サービスのすべてのタイプが含まれている場合に問題が発生しました。これは、サービス参照設定で [参照されたアセンブリで型を再利用する] チェックボックスがオンになっているためです。

于 2013-07-01T14:25:06.853 に答える