問題タブ [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.
c# - C#の任意の開始インデックスで配列を初期化する
たとえば、サブインデックス1の配列をC#で初期化することは可能ですか?
私はOffice相互運用機能を使用していますが、すべてのプロパティは1で始まるオブジェクト配列であり(元々はVB.NETでプログラムされていたと思います)、変更することはできません。配列全体を設定して、変更します。
回避策として、元の配列のクローンを作成し、その配列を変更して、完了したら全体として設定します。
しかし、私は新しい非ゼロベースの配列を作成することが可能かどうか疑問に思いました
interop - ADODB 相互運用の問題
ado 2.5への参照を持つvb 6.0のプロジェクトPrjDb.dllがあります。プロジェクトはマシン A でビルドされます。別のマシン B で PrjDb.dll の相互運用を生成すると、プライマリ相互運用アセンブリ adodb.dll とリンクするのではなく、バージョン フィールドにバージョン 2.5 の新しい ADODB.dll が作成されます。 ('Program Files\Microsoft.NET\Primary Interop Assemblies' にあります)。問題は、アプリケーションをデプロイするときに、この新しく生成された adodb.dll を要求することです。そして、私はそれを出荷したくありません。
コマンド ラインで adodb.dll パスを指定しても、AdoDB の新しい相互運用性が生成されます。スイッチ /strict を使用してみましたが、使用したい AdoDB.dll を使用して参照を解決できないと表示されます。
これは、PrjDb.dll をビルドしたマシンと同じマシンで相互運用機能を生成した場合には発生しません。マシン B 以外のマシンでは、AdoDB の PIA が自動的に選択されます。
PrjDb.dll の相互運用を生成するときに、マシン B で何が起こっているかについて何か考えはありますか?
.net - 64 ビット COM 相互運用機能を備えた 64 ビット .NET DLL をビルドする方法は?
x64 を対象としたマネージ DLL をビルドし、x64 COM 経由で公開する必要があります。ウォークスルー、良い記事などが必要です...
相互運用性はかなり単純ですが、両側で x64 について話していると、何も見つかりません。
com - COM相互運用機能を使用してオブジェクトのライフサイクルを処理する最も効率的な方法は何ですか?
COM自動化用に作成したクラスを使用するWindowsワークフローアプリケーションがあります。COMを使用してクラスからWordとExcelを開いています。
私は現在、COMヘルパーにIDisposableを実装しており、Marshal.ReleaseComObject()を使用しています。ただし、ワークフローが失敗した場合、Dispose()メソッドは呼び出されず、WordまたはExcelのハンドルは開いたままになり、アプリケーションがハングします。
この問題の解決策は非常に簡単ですが、単に解決するのではなく、何かを学び、COMを使用する正しい方法についての洞察を得たいと思います。COMハンドルを所有するクラスのライフサイクルを処理するための「最良の」または最も効率的で安全な方法を探しています。パターン、ベストプラクティス、またはサンプルコードが役立ちます。
interop - Interop アセンブリでコード カバレッジ分析を取得することは可能ですか?
MSDN フォーラムでもこの質問をしましたが、解決策が見つかりませんでした。
http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=3686852&SiteID=1
ここでの基本的な問題は、相互運用アセンブリには、インストルメント化できる IL が実際には含まれていないことです (おそらくいくつかのデリゲートを除く)。そのため、相互運用レイヤーを実行するテスト プロジェクトをまとめることはできますが、実際に呼び出しているメソッドとプロパティの数を把握することはできません。
プラン B は、RCWW (Runtime Callable Wrapper Wrappers) のライブラリを作成するコード ジェネレーターを作成し、コード カバレッジの目的でそれを計測することです。
編集:@Franci Penov、
はい、それはまさに私がやりたいことです。私たちに提供された COM コンポーネントは、約を含む数十の DLL のライブラリを構成します。3000種類。ライブラリを提供するグループが最小限のテストを行うため、アプリケーションでそのライブラリを使用し、その相互運用層をテストする責任があります。コード カバレッジにより、すべてのインターフェイスとコクラスが確実に実行されるようになります。それが私がやろうとしているすべてです。独自のマネージド コードを実行する別のテスト プロジェクトがあります。
はい、理想的には、COM サーバー チームが独自のコードをテストおよび分析する必要がありますが、私たちは理想的な世界に住んでおらず、彼らの作業に基づいて高品質の製品を提供する必要があります。コード インターフェイスの 80% をテストし、そのうちの 50% が宣伝どおりに機能しないことを示すテスト レポートを作成できれば、回避策の問題ではなく、修正が必要な場所で修正を行うことができます。
あなたが言及したモック レイヤーは便利ですが、最終的に相互運用レイヤー自体をテストするという目標を達成することはできません。私は確かにそれを手作業で維持したくありません。インターフェイスへの変更の。
上で述べたように、次のステップは、ラッパーのラッパーを生成し、テスト目的でそれらを計測することです。
python - クリップボードからテキストを読み取るにはどうすればよいですか?
Pythonで(Windows)クリップボードからテキストを読み取るにはどうすればよいですか?
c# - Excelアドインアクセス違反
c#、VS2005、および.NET2.0を使用します。(XP 32ビット)これは、Interopライブラリを介してVBAアドイン(.xla)によって呼び出されるWinformsアプリです。このアプリはしばらく前から存在しており、アセンブリをコンパイルして開発マシン以外の場所で実行すると正常に動作します。開発では、(デバッガーでオブジェクトを実行しているだけで)「EXCEL.EXEの0xで未処理の例外:0x...違反読み取り場所0x.. ..
しかし、ここに奇妙な部分があります:
私のインターフェースの最初の方法はうまくいきます。他のすべてのメソッドは上記のようにクラッシュします。コードの概算は次のとおりです。
ある種の環境問題のようです。レジストリが混乱しましたか?コードのバグである可能性がありますが、他の場所では正常に機能します。
c# - 無料で入手できる BITS 用の最高の C# ラッパーは何ですか?
BITS (Windows バックグラウンド インテリジェント転送サービス)。
BITS との相互運用性を管理する C# ラッパーがいくつかあるようですが、最適なものについて何か意見はありますか?
.net - 行われた p/invoke 呼び出しの割合を示す .NET パフォーマンス カウンターはありますか?
p/invoke 呼び出しのレートを表示する .NET パフォーマンス カウンターはありますか? 私がデバッグしているアプリケーションが、狭いループ内でマネージド ランドからネイティブ コードを呼び出していることに気付きました。意図した実装は、ap/invoke 呼び出しを 1 回行ってからキャッシュすることでした。CLR Interop または Remoting .NET パフォーマンス カウンターを介してこの間違いに気付くことができたかどうか疑問に思っています。何か案は?
.net - .NETでバイナリデータを標準出力にストリーミングする方法は?
バイナリ データを .NET の標準出力にストリーミングしようとしています。ただし、Console クラスを使用してのみ char を書き込むことができます。リダイレクトで使いたい。これを行う方法はありますか?