いろいろ備忘録日記

主に .NET と Python絡みのメモを公開しています。

DevExpress奮闘記-115 (VisualStudio, ツールボックス, 重複, ローディングが遅い, How to resolve issues with Toolbox items, KA18574)


先日、私の環境にてDXv2のバージョンをv12.1にアップデート (v12.1.6) したところ
以下の現象が発生しました。(なんかこの現象、前にも別の問題で発生したことがあります...)

  • VSのローディングがすごく遅い。
  • DevExpressのコントロールがツールボックスに重複して何回も表示される。


何回、アンインストールとインストールを繰り返しても発生するので
SCを検索してみたら、以下のKBを発見。


上記のKBに記載されている方法を試すと、現象が解消されたのでメモしておきます。
私の場合は、VS2010とVS2012を共存させていたので、この現象が発生したみたい。
また、このやり方はたぶん汎用的な方法だと思うので、なにかあったときに利用出来そうです。


以下、上記KBの解決方法の部分をメモしてます。
尚、Express Editionの場合は以下の方法が行えませんのでご注意を。

1) エクスプローラーで「"%USERPROFILE%\AppData\Local\Microsoft\VisualStudio\10.0"」を開いて、全てのTBDファイルを削除
2) regedit.exe起動
3) 以下のキーまで移動して、サブキーごと削除。
・"HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\ToolboxControlsInstaller_AssemblyFoldersExCache"
・"HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\ToolboxControlsInstallerCache"
4) VisualStudio 2010を以下のコマンドで起動
・ devenv /ResetSkipPkgs /log "\ActivityLog.xml"
5) プロジェクトを新規作成して、ツールボックスを表示。ツールボックスの再初期化が行われるので、じっと待つ。

私の場合は、上記の手順まで直りましたが、稀にまだ問題が残る事もあるそうです。
その場合は、以下の手順を試してみるといいみたい。



[ツールボックスの項目が欠損している]

ActivityLog.xmlを開いて、以下の文字列が存在するレコードをチェックする。
  "Microsoft.VisualStudio.IDE.ToolboxControlsInstaller.ToolboxInstallerPackage"

もし、上記のレコードが存在しない場合は、レジストリの以下のキーを探す。
  32ビットの場合
    "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Packages\{2c298b35-07da-45f1-96a3-be55d91c8d7a}"
  64ビットの場合
    "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Packages\{2c298b35-07da-45f1-96a3-be55d91c8d7a}"
このキーは、VisualStudioのインストール段階で追加されます。この場合、VisualStudioを再インストールするか、このKBに付属しているスクリプトを実行します。

もし、上記のキーが一つでも存在しているけど、ツールボックスの項目が見えない場合、そのキーを展開すると"Toolbox"というキーが見つかります。
このキーは、デフォルトのアイテムを含んでおり (DefaultItems)、値が通常0以外であるべきです。なので、この値を1にしてやると問題が解決します。
KBに添付のスクリプトを実行することでも行えます。


[VisualStudioが起動するたびにツールボックスの読み込みにすごく時間がかかる]
[ツールボックスの項目が重複して表示される]

ActivityLog.xmlを開き、以下のエントリを探します。
  "Microsoft.VisualStudio.IDE.ToolboxControlsInstaller.ToolboxInstallerPackage"
最後のエントリが問題のアセンブリを示しています。
行の末尾に、問題のアセンブリが示されています。問題が解決したら、再度上記の手順を最初からやり直して、また確認します。


もし最後のエントリが以下のような文字列を含んでいる場合:
  "Attempting to get Toolbox items from Assembly Microsoft.ServiceModel.DomainServices.EntityFramework"
原因は、RIA Serviceにあります。 WCF RIA ServiceとWCF RIA Service Toolkit (必要ななければ) をアンインストールするか
以下のレジストリキーを削除します。

  32ビットの場合
    "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Silverlight\v4.0\AssemblyFoldersEx\Ria Services v1.0 Silverlight Libraries\Toolbox"
    "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Silverlight\v5.0\AssemblyFoldersEx\Ria Services v1.0 Silverlight Libraries\Toolbox"

  64ビットの場合
    "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Silverlight\v4.0\AssemblyFoldersEx\Ria Services v1.0 Silverlight Libraries\Toolbox"
    "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Silverlight\v5.0\AssemblyFoldersEx\Ria Services v1.0 Silverlight Libraries\Toolbox"

================================
過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。