問題タブ [com-interop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2834 参照

visual-studio-2008 - VS 2008 のラッパー アセンブリ キー ファイルの設定はどこにありますか?

厳密な名前のアプリケーションを構築しようとしています。[参照の追加] ダイアログで追加した COM 相互運用ライブラリを参照しています。随分前になりますが、以前のバージョンの Visual Studio ではWrapper Assembly Key Fileのプロジェクト設定があったように思います。Visual Studio 2008 で見つからないようですか?

0 投票する
0 に答える
1132 参照

asp.net - さまざまな ASP.NET Web サイト プロジェクトの参照と自動更新を管理する方法

私は、Visual Studio 2008 Web サイト プロジェクトを、他の多くのアセンブリ プロジェクトを含むソリューションに持っています。

Web サイト プロジェクトには、プロジェクト、ビン、COM 相互運用機能、およびテキスト ファイルの 4 種類の参照があります。

プロジェクトは自動更新を完全に参照しています。

マネージ DLL のビン参照は、.refresh ファイルで自動更新されます。これは正常に機能し、Visual SourceSafe にチェックインできます。

私の質問は、他の 2 つのタイプ (COM 相互運用機能とテキスト ファイル) を管理する方法についてです。

参照として追加すると、.refresh ファイルなしで相互運用機能 DLL を作成する OCX があります。相互運用 DLL を VSS にチェックインすることは、ビルドするたびにチェックアウトする必要があるため、望ましくありません。アセンブリに厳密な名前を付ける必要があるため、相互運用 DLL を別の場所に移動して直接参照することはできません。この場合、元の OCX が必要です。相互運用参照は、[プロパティ ページ] > [参照] ページにも表示されません。

適切に自動更新するにはどうすればよいですか? 適切な .refresh ファイルを作成するにはどうすればよいですか?

他のマネージ DLL 参照のライセンスを含むプレーン テキスト ファイルがあります。VS2008 と VSS の両方で動作するように見える .refresh ファイルを作成しましたが、自動的には作成されませんでした。

VSS で動作する方法で参照を含めるにはどうすればよいですか?

bin ディレクトリにライセンス ファイルをチェックインすると、ビルドごとにライセンス ファイルをチェックアウトしなければならないという同じ問題が発生します。

0 投票する
1 に答える
3485 参照

vb.net - 遅延バインディングを使用して ByRef パラメーターでメソッドを呼び出す方法

VB.NET から遅延バインディングを使用して呼び出したい COM コンポーネントがあります (面倒な Primary Interop Assembly - PIA メソッドを使用)。

COM メソッドの IDL 署名は次のようになります。

したがって、VB.NET 用語では 2 つの「ByRef」パラメーターと戻り値です。

私はこのメソッドを次のように呼び出そうとします:

これは例外で見事に失敗します: {"Invalid callee. (Exception from HRESULT: 0x80020010 (DISP_E_BADCALLEE))"}

これは、parameterMods 配列で何か間違ったことをしていることを意味すると思います。ParameterMods配列の値を「True」に設定してコメントアウトすると、機能するためです。もちろん、[out] パラメータであるパラメータは更新されないため、意図したとおりに機能しません。

メソッドにも戻り値があるため、他に考慮すべき点はありますか? MSDNの例は、例に戻り値がないことを除いて、私が行っていることとほとんど同じです。どんな助けでも大歓迎です。

0 投票する
4 に答える
1227 参照

web-services - ASP.NET Web サービスから初めて印刷するときに Excel がハングする

Excel を使用して、ASP.NET Web サービスで SpreatSheetML を XLS に変換しています。さらに、ユーザーが正しいチェックボックスをオンにすると、Excel を使用してスプレッドシートを印刷するスレッドが生成されます。

最近、アプリを新しい環境に展開したところ、問題が発生し始めました。最初に印刷しようとすると、Excel がサーバーでハングしているように見えます。つまり、PrintOutワークブックのメソッドへの呼び出しが返されません。

しかし、アプリケーション プール ID としてサーバーにログインし、Excel を開き、何かをプリンターに送信して、もう一度閉じると、それ以降は印刷が機能します。

Excel が表示されていると思われますinvisible dialog- 症状は以前と同じで、Excel を開いたときに表示された「オブジェクトのリンクと埋め込みを使用できません」というダイアログで Excel が停止したように見えました。

サーバー側の Office オートメーションを使用するのが悪いことはわかっていますが、これは変更が非常に難しいレガシ アプリであるため、ソリューションを再設計するようにアドバイスしないでください。

この種の行動を経験した人はいますか?

0 投票する
1 に答える
5003 参照

c# - COM相互運用、分離、および重複する参照の除外

Microsoftが提供するCOMDLL(dsofile.dll)を、私たちが作成したC#dll(アセンブリA)で使用しています。COM dllを登録する必要をなくすために、dsofile.dllへの参照のIsolatedプロパティをtrueに切り替えました。

つまり、dllをコンパイルすると、Visual Studioはdsofile.dll、Interop.DSOfile.dll、およびネイティブマニフェストファイルをソリューションのbinフォルダーにコピーし、dsofile.dllを登録しなくてもアプリケーションを実行できます。

このアプローチは、小規模なテストアプリケーションで成功しました。

ただし、実際のアプリケーションでは、アセンブリAは他のいくつかのdll(アセンブリBおよびアセンブリC)とアプリケーションEXEによって参照されます。ネイティブマニフェストファイルと相互運用DLLがアプリケーションのbinフォルダーにコピーされると、最初のdllを参照する各dllが独自のコピーを作成するため、各ファイルの異なるコピーが使用されます。

これにより、セットアッププロジェクトで参照として表示されるファイルの複数のコピーが作成されます(つまり、アセンブリA、B、CおよびEXEフォルダーのdsofile.dll、アセンブリA、B、CおよびEXEフォルダーのInterop.DSOFile.dll、アセンブリA、B、CおよびEXEフォルダーからのNative.Assembly A.manifest)およびコンパイラー警告(「2つ以上のオブジェクトが同じターゲット位置を持っている」)。

さらに、最終フォルダーにコピーされたマニフェストおよび相互運用機能dllがアセンブリAフォルダーから直接取得されなかった場合(重複ファイルが相互に上書きするため)、アプリケーションはCOMDLLを正常にロードできません。

セットアップの依存関係からファイルの重複したコープを手動で除外することを余儀なくされましたが、ソリューションがリロードまたは再構築されると、それらは再表示されます。

誰かがCOMdllの分離された展開を達成するためのより良い方法を手伝うことができますか?可能であればマニフェストも埋め込みたいのですが、今のところうまくいっていません。

別の方法として、Visual Studio Automation用のEnvDTEを使用して重複コピーを除外するタスクの自動化を調査してきましたが、検出された依存関係ノードにアクセスしてそれらを識別および除外できる方法を見つけることができませんでした。UIHierarchyItemインターフェイスを使用してそれらにアクセスすると、セットアッププロジェクトの名前がす​​べてのファイルのnameプロパティとして表示され、除外オプションはありません。

何かアドバイスをいただければ幸いです。

0 投票する
5 に答える
72235 参照

.net - エラー HRESULT: 0x80010105 (RPC_E_SERVERFAULT) の原因は何ですか?

サード パーティの支払い処理エンジンを使用してクレジット カード トランザクションを承認する ASP.NET Web サービスを作成しました。

.ocxWeb サービスは別のアプリケーション サーバーでホストされ、ActiveX オブジェクト (拡張機能)を介して支払い処理サーバーに接続します。最近、 " " チェックHRESULT: 0x80010105 (RPC_E_SERVERFAULT)を使用してアプリケーションへの接続を確立しようとすると、例外が生成されます。IsAvaiable

この問題の調査を開始するのに適した場所を推奨する人はいますか?

(ベンダーに連絡することが最初の選択肢であることはわかっていますが、テクニカル サポートに連絡する前に「一列に並んで」もらいたいと思います)

0 投票する
1 に答える
3258 参照

c# - COM 相互運用機能を介して C# から VBScript にバイト配列を返す

VBScript からアクセスできるようにしたいバイト配列を返す C# メソッドがあります。多かれ少なかれ:

vbscript は次のようになります。

道に迷いました。Google は協力したくないのですが、ここにいる誰かが助けてくれることを願っています!

ロブ

0 投票する
5 に答える
7583 参照

.net - COM 相互運用性のために .net アセンブリを登録してもメソッドが公開されない

わかりました、私は夢中になります。シンプルな .net アセンブリを COM オブジェクトとして使用できるようにしようとしましたが、うまくいきません。私は多くの異なるアプローチを試みてきましたが、どれもうまくいきません。これまでのところ、私が持っている最も近いものは、属性、インターフェース、手動登録などの量が最も少ないものです.

次のようなテストとして vbscript があります。

私のC#コードは次のようになります:

私のプロジェクト(VS2008)では、「アセンブリCOMを表示する」を選択しました。これにより、AssemblyInfo.csに属性が追加され、「COM相互運用に登録する」もチェックされました。

ProgId は実際には違いがないことがわかります (私の場合はとにかく) - 実際の名前空間 + クラス名を指定している限り、それをオーバーライドすることができます。

問題は、私の CreateObject はうまくいきますが、メソッド Test() が見つからないということです。実際、dll を取得して tlb を抽出すると、メソッドがまったく表示されないと予想されます。

私が得るエラーはこれです:

C:\inetpub\wwwroot\ASPTest\testrun.vbs(3, 1) Microsoft VBScript ランタイム エラー: オブジェクトはこのプロパティまたはメソッドをサポートしていません: 'Test'

フィードバックをいただければ幸いですが、私が試したことをお知らせします。クラスで Guid と AttributeGuid をいじり、クラスで明示的に COMVisible を定義しました。

最後の注意 - ほとんどのテストは署名されていないアセンブリを中心に展開されましたが、エラーを特定しようとして、ストロングネーム/キーでも試しましたが、何もしませんでした。

誰でも問題を見つけるのを手伝ってくれますか?

0 投票する
4 に答える
13534 参照

c# - C# で COM コンポーネントをインスタンス化できない - エラー 80070002

自分のマシンで Windows Media Player COM オブジェクトをインスタンス化しようとしています:

その最後の行を実行すると、次のエラーが発生します。

この同じコードは、他の開発者のマシンやエンド ユーザーのマシンでも機能します。何らかの理由で、私のマシンでのみ失敗します。原因は何ですか?

0 投票する
2 に答える
2402 参照

c# - C#クラスからのVB6.0の自動化エラー

C#クラスライブラリを作成し、VB6.0アプリケーションで使用しています。しかし、(文字列を返す)メソッドを呼び出そうとすると、自動化エラーが発生します。それ以外の場合、C#クラスは正常に実行されています。

なぜですか?