稼働中の Web サイトをライブ環境からローカル環境に引き下げました。System.Data.XML 名前空間への参照を除いて、すべて正常に機能しました。これにより、見つからないという標準エラーが発生しました。
このサイトの IIS のアプリケーション プールが 4.0 に設定されていることを最初に確認しました。
次に、3.5 に設定されている Visual Studio でサイトのターゲット フレームワークを確認しました。
次に、web.config を調べたところ、System.Data.Linq (System.Core と共に) がリストされていることがわかりました。
Visual Studio経由で参照を追加してみました。これにより、私のweb.configが変更され、この行で重複するセクションが追加されました
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
次に、4.0 をターゲットにして、何かが変わるかどうかを確認してみました。名前空間が正しく取得されるようになりましたが、LINQ 関数の呼び出しはすべて失敗します。
web.config の Assemblies セクションは次のとおりです。
<compilation defaultLanguage="c#" debug="true">
<assemblies>
<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.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>