VB.Net リビルド時に意味不明なメッセージが出る

このQ&Aのポイント
  • VB.Netのプロジェクトをビルド、リビルドすると、意味不明なメッセージが表示されるようになりました。メッセージを解釈する方法が分からず困っています。
  • 具体的なエラーメッセージや問題の箇所が明示されておらず、気持ち悪さを感じています。問題を特定する方法や解決策について知っている方がいらっしゃいましたら、教えていただけると助かります。
  • デバッグや実行には影響がないため、一応は問題なく使用できますが、先に進むにはこのメッセージを解決したいと思っています。
回答を見る
  • ベストアンサー

VB.Net リビルド 意味不明なメッセージが・・

お世話になります。 VB.Net 駆け出しの者です プロジェクトをビルド、リビルトすると、いつからか以下のメッセージが出るようになっていました。 ****************************************************** vbc : warning BC40059: アセンブリ 'Microsoft.VisualBasic.Compatibility' からの間接的な参照が原因で、埋め込まれた相互運用機能アセンブリ 'stdole' に対して参照が作成されました。両方のアセンブリで '相互運用機能型の埋め込み' プロパティを変更することを検討してください。 ****************************************************** 上記のメッセージが出ても、デバックもしくは発行で実行することは可能なのですが、何か気持ち悪い気がしております。エラーメッセージならクリックすればそのコードに移りますが、実際にどこがという指定がないので、その問題の箇所にたどり着けないのです。 上記のメッセージ、もしくはそのほかの情報からなんとかメッセージの箇所を突き止める方法はありますでしょうか?何かご存知の方がいらっしゃいましたら何卒ご教授いただければと存じます。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hitomura
  • ベストアンサー率48% (325/664)
回答No.2

> ご指摘のページは既に見ていたのですが、assembly2 や Embed Interop Types という > ワードでプロジェクト内のコードで検索をかけたのですが、まったく引っかからず原因箇所が > 特定できない状態でしたのでこちらで質問させていただいたしだいであります;; (1)assembly2 エラーメッセージの説明ページでは、実際のメッセージの一部分を総称的に記述する場合が多々あります。説明ページでは実際のコードまたはプロジェクト構成を特定することができないためです。 この場合、説明ページ内の一部記述を実際のエラーメッセージの記述に置き換えて読む必要があります。 説明ページの  アセンブリ '<assembly2>' からの間接参照により、埋め込まれた相互運用機能アセンブリ '<assembly1>' の参照が作成されました。 と あなたのエラーメッセージの  アセンブリ 'Microsoft.VisualBasic.Compatibility' からの間接的な参照が原因で、埋め込まれた相互運用機能アセンブリ 'stdole' に対して参照が作成されました。 とを比較すると、<assembly1> が 'stdole' に、<assembly2> が Microsoft.VisualBasic.Compatibility に対応していることがわかります。 したがって、以下の解説では文中の assembly1 および assembly2 を上記に置き換えて読む必要があります。 (2)Embed Interop Types VB.Net のことは解らないのですが、コード中ではなく、アセンブリ参照の設定画面にそういう項目はないでしょうか?

kyokotan12
質問者

お礼

hitomura さん お世話になります。 プロジェクトの参照追加の箇所で、stdole という名前にチャックが入っていたので、もしやと思い、チェックを外したら 問題のメッセージは表示されなくなりました。 この部分にチェックを入れた覚えはないのですが、解決方法が見つかり すっきりいたしました。 ありがとうございました。

その他の回答 (1)

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

警告の番号で検索したら次のページが見つかりました。 http://msdn.microsoft.com/ja-jp/library/vstudio/ff182188.aspx ……えーと、これ読んでどうすればいいかわかりましたでしょうか?

kyokotan12
質問者

補足

hitomura さん お世話になります。 ご指摘のページは既に見ていたのですが、assembly2 や Embed Interop Types というワードでプロジェクト内のコードで検索をかけたのですが、まったく引っかからず原因箇所が特定できない状態でしたのでこちらで質問させていただいたしだいであります;;

関連するQ&A

  • VB2010で作成したソフトのexeファイルが実行できません。

    VB2010で作成したソフトのexeファイルが実行できません。 以前、Windows XP上のVisual basic 6.0で作成したソフトを一部直すために、Windows7上のVisual basic 2010でそのままの形で書き直しました。しかし、以下の4つの警告文が出るためか、exeファイルを実行できません。その警告文は以下の通りですが、内容が理解できません。 1)アセンブリ 'AxInterop.Microsoft.Vbe.Interop.Forms' からの間接的な参照が原因で、埋め込まれた相互運用機能アセンブリ 'stdole' に対して参照が作成されました。両方のアセンブリで '相互運用機能型の埋め込み' プロパティを変更することを検討してください。 2)アセンブリ 'Interop.MSComDlg' からの間接的な参照が原因で、埋め込まれた相互運用機能アセンブリ 'stdole' に対して参照が作成されました。両方のアセンブリで '相互運用機能型の埋め込み' プロパティを変更することを検討してください。 3)アセンブリ 'Microsoft.Vbe.Interop.Forms' からの間接的な参照が原因で、埋め込まれた相互運用機能アセンブリ 'stdole' に対して参照が作成されました。両方のアセンブリで '相互運用機能型の埋め込み' プロパティを変更することを検討してください。 4)アセンブリ 'Microsoft.VisualBasic.Compatibility' からの間接的な参照が原因で、埋め込まれた相互運用機能アセンブリ 'stdole' に対して参照が作成されました。両方のアセンブリで '相互運用機能型の埋め込み' プロパティを変更することを検討してください。 以上、宜しくお願いします。

  • VB6.0からVB2010へのプログラムの書き換え

    VB6.0からVB2010へのプログラムの書き換えをしています。 「アセンブリ 'Microsoft.Vbe.Interop.Forms' からの間接的な参照が原因で、埋め込まれた相互運用機能アセンブリ 'stdole' に対して参照が作成されました。両方のアセンブリで '相互運用機能型の埋め込み' プロパティを変更することを検討してください。」などの警告が3件出ました。 他の2つは参照名が"Interop.MSComDlg"と"Microsoft.Vbe.Interop.Forms"で警告文の文面は同じです。 そこで、参照で対応する参照名のプロパティの埋め込みを変えると、今度は「クラス 'AxFrame' への参照は、そのアセンブリが No-PIA モードを使用してリンクされている場合には許可されません。」というエラーと「相互運用機能型 'AxFrame' を埋め込むことができません。代わりに適用可能なインターフェイスを使用してください。」という2つのエラーが出ます。 どのように、すればエラーを解消できるでしょうか。 宜しくお願いします。

  • C#.NETでのCOMコンポーネント作成方法

    お願いします。 C#.NET2003で、時間を表示する極簡単なユーザコントロールを作成しました。 そのユーザコントロールは、同じソリューションの中でTestアプリケーションを 作成し、参照設定で「参照の追加」-「プロジェクト」タブで追加することにより、 ツールボックスのマイユーザコントロール上に表示され、Testフォームに貼り 付けることが出来、正常に動作しました。 ここまではいいのですが、このユーザコントロールを誰でも使えるようにしようと、 以下を実行しました。 (1) 構成プロパティの「COMの相互運用機能に登録」を「True」に変更。 (2) sn.exe -k コマンドにより、.snkファイルを作成。 (3) ユーザコントロールのAssemblyInfo.csを2行修正。 [assembly: AssemblyVersion("1.0.0.1")] [assembly: AssemblyKeyFile("..\\..\\SimpleUserControl.snk")] (4) ソリューションをリビルド。 (5) リビルドしたDLLファイルをC:\Windows\assemblyフォルダにコピー。 このようにして、新しいプロジェクトを作成し、「参照の追加」のCOM タブを見ると、ちゃんとユーザコントロールが見えるのですが、追加 しようとすると、以下のエラーが発生しました。 ============================================================= 'SimpleUserControl'への参照を追加できませんでした。 タイプライブラリを.NETアセンブリに変換できませんでした。 タイプライブラリSimpleUserControlはCLRアセンブリからエクスポートされた ため、CLRアセンブリとして再度インポートすることはできません。 ============================================================= 何か手順が抜けているの思うのですが、どなたかご教示頂けないで しょうか?

  • COM相互運用機能のON,OFFによるDLLの差異

    Visual Studio 2010で、VB.NETのクラスライブラリを作成して、.NETとCOMの両方で使用しているのですが以下のことがよく分かりませんので教えてください。 同じプロジェクトのDLLファイルをVB.NETなどから.NET用のDLLとして使っているだけでなく、VBAなどからもCOM用のDLLとして使っているのですが、プログラムに変更があると、COM相互運用機能の登録がONの場合とOFFの場合の両方で2回ビルドして各々のDLLファイルを別に用意して使い分けていました。しかし、先日、COM相互運用機能の登録をONにしてビルドしたDLLでもVB.NETなどから.NET用のDLLとして参照できてしまうことが分かりました。.NET用のDLLとして利用する場合には、COM相互運用機能の登録をON,OFFに関係なくどちらでビルドしたDLLファイルでも使用できるのでしょうか。たまたま今は参照できているだけで将来的には使えなくなる可能性があるので、.NET用のDLLとして使用する場合には、COM相互運用機能の登録をOFFにしてビルドしたDLLを使用するべきなのかがよく分かりません。つまり、下記の(A)と(B)のどちらが正しいのかがよく分かりませんので教えてください。 (A) VB.NETとして使用する場合には、COM相互運用機能の登録をON,OFFに関係なく、どちらでビルドしたDLLファイルでも使用できるが、COMとして利用する場合には、COM相互運用機能の登録をONにして、ビルドして作成したDLLファイル(.dll)とタイプ ライブラリ ファイル(.blt)を使用する。VB.NETとしてもCOMとしても利用する場合には、COM相互運用機能の登録をONの方だけビルドすればよい。 (B) VB.NETとして利用する場合には、COM相互運用機能の登録をOFFしてビルドしたDLLを使用する。COMとして利用する場合には、COM相互運用機能の登録をONにしてビルドして作成したDLLファイル(.dll)とタイプ ライブラリ ファイル(.blt)を使用する。VB.NETとしてもCOMとしても利用する場合には、COM相互運用機能の登録をON,OFFの両方で2度ビルドする必要がある。 なお、(A)が正しい場合にのみ、分かる範囲でいいので教えてほしいのですが、 コードを何も変更しないでビルドしてもDLLファイル(.dll)は更新されませんが、COM相互運用機能の登録のONとOFFを変更するだけでDLLファイル(.dll)は更新されています。COM相互運用機能の登録をONにしてビルドして作成されたDLLファイル(.dll)は、COM相互運用機能の登録をOFFにしてビルドして作成されたDLLファイル(.dll)と何が異なるのでしょうか。 よろしくお願いします。

  • C#でSystem.IO.FileFormatEx

    VB2010で System.IO.FileFormatException をThrowしているコードがあります。 これをC#2010にコンバートしたのですが 上記箇所に於いて 型または名前空間名 'FileFormatException' は名前空間 'System.IO' に存在しません。アセンブリ参照が不足しています。 というエラーが出てしまいます。 何を参照設定すればよいのでしょうか。 またはこのような処理は不可なのでしょうか。

  • C#のコントロールdllをVBツールボックスに追加

    宜しくお願いします。 現在、C#で自作のカレンダーを開発し 自作カレンダーをVBのツールボックスへ登録し Formへデザイン(追加)しようとしております。 テストの段階では、テスト用のプロジェクトから dllを参照しnewすることで表示ができておりましたが ツールボックスから貼り付ける形で使用したいということで 調べて色々試しております。 ・ツールボックスのアイテムの追加で.NET Framework の一覧に表示がされない ・ツールボックスのアイテムの追加 > 参照ボタンでdllを指定すると  「ツールボックスに含めることのできるコンポーネントは何もありません」  のエラーが出る ・ネットで調べ、GACへの登録を試しましたがgacutil.exeがPCの中にない ・コマンドプロンプトでコマンドを実行( gacutil /i calendar.dll )し、  レジストリには登録されているが一覧には表示されない という現状です。 ・dllのプロジェクト設定でCOM相互運用機能の登録にチェック。効果なし ・dllのプロジェクト設定でアセンブリをコム参照可能にするにチェック。効果なし ・追加する側、AutoToolboxPopulate を [true]に設定。効果なし という現状です。 そこで質問なんですが ・dll側で必要な設定やコード等があるんでしょうか? ・追加する側で必要な操作等はありますか? ご教授宜しくお願い致します。

  • VBAで呼び出したVBのDLLのデバッグ方法

    VB2010で、COM相互運用機能を使って作成したDLLを VBAから呼び出すことはできるのですが この状態でこのDLLをデバッグすることはできないでしょうか。 本来ならば、DLLをデバッグするテストプログラムを VB2010のVB.NETのWindowsフォームアプリケーションか ConsoleApplication1で作成して、 同じソリューションの中に DLLとテストプログラムのプロジェクトを配置して 参照の追加でDLLを参照設定して 両者をデバッグをすると思われますが、 テストプログラムを作るのがかなり大変なのと、 今回作成したDLLは、元々はVBAの中のひとつのプロシージャ―で、 事情があって、このプロシージャ―だけをVBのDLLにしたものです。 このプロシージャ―は元々はVBAの中で正しく動作していたものです。 VBに書き直した時に何らかの不具合が起きていると思われます。 テストプログラムを作らずに、既存のVBAから呼び出して、 DLLの部分の動作だけを(できればVB2010で)デバッグできないでしょうか。 よろしくお願いします。 (WindowsXP SP3 , Excel2003のVBA , Visual Studio 2010)

  • 意味不明のメッセージ

    パソコンを起動するとき何回かに1回、「Generic Host Process for Win32 Services はエラーが発生し閉じられる必要がありました。」というメッセージが画面に現れて、エラー報告を送信するかしないか聞かれます。Generic Host Process for Win32 Servicesが何のことなのかと、現れないようにする方法を教えてください。

  • 意味不明のメッセージが・・・

    ADSLで繋いでいます OSはWIN2000です。 ここ最近(いつからそうなったのかはよく覚えていません)ネット使用中に意味不明のメッセージ画面が出るようになりました。 意味不明というのは、メッセージが文字化けしているので理解できないのです。 『OK』ボタンを押していいものかどうかわからないので、メッセージが出るたびに『X』マークを押して消しています。 先日フリーソフトをDLして解凍しようとしたのに出来なかったことがあります。 そのファイルは削除しましたが、それが何か関係しているのでしょうか? どうかよろしくお願いします。

    • ベストアンサー
    • ADSL
  • 意味不明のメッセージが突然現れるようになりました

    ある時から、突然以下の表示が現れます。 どうすればよいのでしょうか? 何かセキュリティ設定に問題が発生したのかと思いましたが、やはりわかりませんでした。 ちなみに、当方はエイサーのデスクトップ型PC L3600をWimaxで使用しています。 OSはビスタで、セキュリティは無料で使えるマイクロソフトセキュリティ にしています。 「スプーラサブシステムアプリケーションは、動作しなくなったたため、閉じられました 問題が発生したため、アプリケーションは正しく動作しなくなりました。 解決策がある場合は、windowsから通知されます。」