トップ回答者
Microsoft.VisualBasic.PowerPacks.Vsの参照について

質問
-
Visual Studio 2008 ( .NET Framework 3.5 SP1) で開発したVBプロジェクトで(Windowsアプリケーションプロジェクト)、
Microsoft.VisualBasic.PowerPacksのShapeContaner等のコントロールを貼り付けた画面を使用しています。
これを .NET Framework 3.5がインストールされたPCに配布して実行すると、
以下のようなエラーメッセージが出て実行できません。
フォームの作成中にエラーが発生しました。詳細については、Exception.InnerExceptionを参照してください。
エラー:アセンブリ'Microsoft.VisualBasic.PowerPacks.Vs, Version=9.0.0.0, Culture=netural, PublicKey Token=0b03f5f7f11d50a3a'から型
'Microsoft.VisualBasic.PowerPacks.ShapeContainer'を読み込めませんでした。
このため、このPCに .NET Framework 3.5 SP1をインストールしてみたのですが、
GACの情報が古いdllバージョンのまま更新されない模様で、同じエラーメッセージが出て状況変わりません。
c:\Program Files\Common Files\Microsoft Shared\Visual Basic Power Packs\配下のdllも古いバージョンのままでしたので、
これも入替えてみましたが、状況は変わりません。
Microsoft.VisualBasic.PowerPacks.VsのGACをいったんアンインストールしようとしても、
使用中となってアンインストールできません。
アプリケーションと同一フォルダ内には新しいdllが配置してあります。
.NET Framework 3.5 SP1が最初からインストールされているPCでは問題なく動作しています。
解決方法がありましたら教えていただけますよう、お願いいたします。
- 編集済み mmfujimura 2012年5月9日 8:05
回答
-
Visual Basic Power Packは.NET Frameworkに付属せず別途インストールする必要があります。そのため3.5 / 3.5 SP1に関係なく、9.0.21022.8をインストールしてしまったか、あるいはそもそもインストールしておらず偶然にも別アプリケーションが古いバージョンをインストールしてしまったのかだと思います。
また、古いバージョンを削除しようとされていますが、GACには同一ファイルの複数のバージョンをインストールできます。
# アセンブリの違いを見てみようと思いましたが、手元の環境には全然入っていませんでした。VSは入れてあってもVBはチェック外してた…。
- 回答としてマーク mmfujimura 2012年5月10日 2:21
すべての返信
-
これと同じかな?
質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
-
返信いただきありがとうございます。
確認しましたが、Microsoft.VisualBasic.PowerPacks.Vs.dllはインストールされているようですので、
今回の現象とは異なると思われます。
念のため記事内のブートストラッパーをインストールしてみましたが、状況変わりませんでした。
今回のエラーメッセージの「ShapeContainer」が
framework3.5に入っている
Microsoft.VisualBasic.PowerPacks.Vs.dll(ファイルバージョン:9.0.21022.8)にはなく、
framework3.5SP1に入っている
Microsoft.VisualBasic.PowerPacks.Vs.dll(ファイルバージョン:9.0.30729.1)にありますので、
このあたりに原因があるのではないかと思われます。
また何かお気づきのことがありましたらよろしくお願いします。
-
Visual Basic Power Packは.NET Frameworkに付属せず別途インストールする必要があります。そのため3.5 / 3.5 SP1に関係なく、9.0.21022.8をインストールしてしまったか、あるいはそもそもインストールしておらず偶然にも別アプリケーションが古いバージョンをインストールしてしまったのかだと思います。
また、古いバージョンを削除しようとされていますが、GACには同一ファイルの複数のバージョンをインストールできます。
# アセンブリの違いを見てみようと思いましたが、手元の環境には全然入っていませんでした。VSは入れてあってもVBはチェック外してた…。
- 回答としてマーク mmfujimura 2012年5月10日 2:21
-
Visual Basic Power Packは.NET Frameworkに付属せず別途インストールする必要があります。そのため3.5 / 3.5 SP1に関係なく、9.0.21022.8をインストールしてしまったか、あるいはそもそもインストールしておらず偶然にも別アプリケーションが古いバージョンをインストールしてしまったのかだと思います。
また、古いバージョンを削除しようとされていますが、GACには同一ファイルの複数のバージョンをインストールできます。
# アセンブリの違いを見てみようと思いましたが、手元の環境には全然入っていませんでした。VSは入れてあってもVBはチェック外してた…。
佐祐理様
GAC登録は一度失敗していたのですが、(同じバージョンがすでに登録してあるというメッセージだったかと。。。)
3.5をアンインストールしてみるなど試行錯誤したあとで再度試してみたところ、
(あるいは登録するdllの場所なども関係あるのでしょうか。。。?)
新しいファイルバージョンに更新され、アプリケーションが起動することができました。
正確になにがどうとご報告できなくて申し訳ありませんが、
ともかくご指摘がヒントになりましたので、助かりました。ありがとうございました。
ちなみに、このふたつのdllはアセンブリバージョンが同じ9.0.0.0なのでファイルバージョンが更新された、
という言い方をしていますが、
該当PCで偶然ではなく何かのアプリケーションが古いdllを使用していた場合には
そちらが動作しなくなるということになるのではという新たな問題はありますが。。。
今のところ何かのアプリケーションがあるのかどうかは不明のため、
今回は解決としてクローズさせていただきます。
ありがとうございました。
-
基本的に PowerPacks は Redist.txt で記載されているインストーラーで入れてください。(もしくは、ライセンスがあるなら VS ごと入れるとか)
それ以外の DLL ファイルだけをコピーするといった適切でない手法はライセンスに抵触する可能性があります。
再配布を認められたファイルで受け渡しするようにしてください。
質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
- 編集済み AzuleanMVP, Moderator 2012年5月10日 15:51