none
C#からCOMの呼び出しでデバッグ実行時のみエラーが出る RRS feed

  • 質問

  • VisualStudio2008 C#からATLで作成したCOM DLLを呼び出しています。
    COM DLLは、レジストリに登録せずmanifestを作成して参照しています。

    手順
    1 COM DLL用のmanifestを作成する。
    2 tlbimp.exeツールでプロキシDLLを作成する。
    3 1で作成したmanifestファイルと2で作成したdllをCOMを使用するプロジェクトで参照設定する。
    4 ビルドするとアプリケーションのmanifestが自動生成され、dependentAssemblyタグが自動的に追加される。

    VisualStudioからデバッグ実行したときにCOMオブジェクトを作成する箇所でエラーが発生します。

    エラーが起こる箇所
    testCOMLib.AtlCOMClass com = new testCOMLib.AtlCOMClass();

    エラーメッセージ
    CLSID{xxxx...}を含むコンポーネントのCOMクラスファクトリを取得中に、次のエラーが発生しました:80040154

    プロジェクトのプロパティ「Visual Studio ホスティングプロセスを有効にする」チェックボックスを外した場合は、問題なく実行できます。
    また、
    1 COMのmanifestファイルの参照設定を解除。
    2 自動出力されたアプリケーションのマニフェストをプロジェクトに追加。
    3 プロジェクトのプロパティ「アイコンとマニフェスト」でプロジェクトに追加したマニフェストを選択。
    4 COMのmanifestと、COMのdllをDebugフォルダにコピー(自動的にコピーされなくなったため。)
    すると追加したマニフェストと同じ内容のxxx.vhost.manifestが自動生成され問題なく実行できます。

    上記のような回避方法をとらずにデバッグ実行する方法はないのでしょうか?
    よろしくお願いします。


    2009年4月9日 5:54

回答

すべての返信

  • depentAssemblyを含む*.vshost.exe.manifestが生成されないと言うことでしょうか?
    それとも、参照した直後にデバッグ実行するとエラーになり、プロジェクトを開き直すと問題なくなると言うことでしょうか?
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年4月9日 14:47
    モデレータ
  • *.vshost.exe.manifest自体が生成されません。

    以下のことは確認しましたが、やはり*.vshost.exe.manifest生成されませんでした。
    1 一端プロジェクトを閉じて開きなおす。
    2 マシンを再起する。
    3 bin,objフォルダを削除し、リビルドを行う。

    よろしくお願いします。


    2009年4月9日 14:53
  • USのConnectを軽く突いたところ、CRTのmanifestでも何か起きているとかいう話が出ていますね。
    今回の現象と近いのかどうかを含めて、調査・検証・考察に時間が取れていませんが、一旦書いておきます。

    https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=371337

    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年4月9日 16:07
    モデレータ
  • URL、ありがとうございます。
    内容を確認しました。
    状況は異なりますが、たぶん似たような現象ではないかと思います。
    2009年4月13日 7:24
  • こんにちは。フォーラムオペレータの高橋です。

    >Azuleanさん
    はじめまして。いつもお世話になっております。

    >河原さん
    Connectサイトの情報によると、VS2010では再現しない問題という事で終わってますね。
    今のところ、河原さんが提示して下さった回避方法で、対応するしかないかもしれません。
    ご迷惑をおかけしてすみません。

    Azuleanさんから頂いた情報に、勝手ながら回答マークを付けさせていただきました。
    もし不適切であれば、回答マークを外すことも可能なので、そのときはよろしくお願いします。

    今後ともMSDNフォーラムをよろしくお願いします。


    マイクロソフト株式会社 フォーラム オペレータ 高橋春樹
    2009年4月24日 8:24