問題タブ [regasm]
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.
.net - .netregasmの質問
このシナリオで、.net com dllを展開し、その上でregasmを実行するセットアップがあるとします。このセットアップにはアンインストールがないため、登録解除は呼び出されません。セットアップを何度も実行できます。
そうすることで何か危険はありますか?新しいバージョンのdllを使用して新しいセットアップを展開するとどうなりますか。
アンインストールを実行しないことに危険はありますか?
.net - RegAsm.exeを使用せずにタイプライブラリを登録する方法
RegAsmツールを使用せずにタイプライブラリを登録できるかどうか知りたいです。これが私の状況です。これは、私がこれを実行したい理由をうまく説明するでしょう。
古いVB6アプリケーションにいくつかの最新機能を提供するアセンブリを.NETで開発しています。次のように、RegAsmを使用して、開発マシンにアセンブリとタイプライブラリを正常に登録しました。
上記のコマンドは、タイプライブラリ(MyAssembly.tlb)を生成して登録し、アセンブリを登録します。VB6でIntellisenseを使用できるように、タイプライブラリを登録する必要があります。
このメソッドの問題は、タイプライブラリファイルを生成するときに、 TlbExp.exe の場合と同じレベルの制御ができないことです。特に、TlbExpの/ namesフラグを使用して、プロパティ名の適切な大文字と小文字を指定する必要があります(RegAsmはそれらを削除します)。したがって、TlbExpを使用してtlbファイルを生成する場合、アセンブリ登録プロセスとは別に登録する方法はありますか?
編集: da_m_nの答えは私が尋ねた質問に対して正しいです。しかし、RegAsmがタイプライブラリを登録できたという理由だけで、VB6で参照するためにtlbを登録する必要があるという誤った仮定の下にありました。したがって、今のところ、アセンブリを登録し、未登録のTlbExpで生成されたtlbを固定名で参照しています。
c# - COM 対応 .NET ユーザー コントロール
COM 対応の .NET ユーザー コントロールを作成しましたが、これをユーザーに展開して Web ページでコントロールを使用するにはどうすればよいでしょうか?
キャブはこれで行く方法ですか?ユーザーのマシンのコントロールを再ガス化する必要があることを理解しています。これには、通常の msi の方が使いやすく、使いやすいでしょうか?
ありがとう
.net - .NET: regasm と caspol は、ログに記録されているユーザーに依存します
regasm
andを使用caspol
してアセンブリを登録し、信頼を付与する場合、これらのユーティリティがどのユーザー アカウントで実行されるかは問題になりますか?
コンピューターまたはドメイン上の特定のユーザーに対してのみ、アセンブリが登録されたり、信頼が付与されたりする状況が発生する可能性はありますか?
gac - COMプログラムはCOM相互運用機能に登録されている.NETDLLをどのように見つけますか?
ある顧客は、VB6から.NETDLLを使用したいと考えています。これらは逆相互運用をサポートするように設計されており、すべて正常に動作します...ただし、次の点を除きます。2つの異なるディレクトリに2つの別個のVB6プログラムがあります。次のいずれかを実行する必要があるようです。
- .NET DLLを両方のディレクトリにコピーするか、または
- .NETDLLをGACにインストールします
これはお客様の見解であり、RegAsmのドキュメントでもサポートされています。
Regasm.exeを使用してアセンブリを登録した後、それをグローバルアセンブリキャッシュにインストールして、任意のCOMクライアントからアクティブ化できるようにすることができます。アセンブリが単一のアプリケーションによってのみアクティブ化される場合は、そのアプリケーションのディレクトリに配置できます。
私はこの点で混乱しています。
混乱の最初のポイント:
私が理解している限り、COMランタイムはProg ID /ClassIDを使用してDLLを検索します。レジストリでクラスIDエントリを確認すると、CodeBaseキーに.NETDLLへのフルパスが表示されます。Prog ID / Class IDを使用するCOMプログラムが、CodeBaseを使用して.NET DLLを見つけられないのはなぜですか?
混乱の2番目のポイント:
GACは.NETに固有です。COM参照の解決にどのように関与していますか?
c# - .tlbファイルを登録する必要がありますか?
c#で生成された.tlbファイルを介してc++にロードされるcominterop c++dllがあります。コンピューターで実行すると正常に動作しますが、フォーマットされたばかりのコンピューターで実行すると、次のようになります。
.tlbファイルまたはそのdllをシステムに登録するために何かをする必要がありますか?regasm.exeに関する何か?
もしそうなら、regasm.exeをダウンロードして使用することだけが可能ですか?
vb6 - VB6 アプリケーションで使用されるクラス ライブラリの RegAsm
簡潔に言うと、COM に対応し、COM 相互運用に登録されている C# クラス ライブラリを作成しました。ライブラリをコンパイルした結果、.dll ファイルと .tlb ファイルが生成されました。
VB6 アプリケーションを実行している別のマシンがあります。そこで、.dll ファイルと .tlb ファイルをマシンの C:/Windows/system32 フォルダーにコピーしました。次に、以下を使用してこれらのファイルを登録しました。
ファイルが正常に登録された後、VB6 アプリ内から Test.tlb ファイルへのプロジェクト参照を追加し、次のように新しい参照クラスでメソッドを呼び出そうとしました。
動作せず、-2147024894 自動化エラーが発生します。
system32 のようなプライベート フォルダーに dll をインストールするべきではないことを読みました。GAC に登録するか、「/codebase」オプションを使用して別の場所に登録する必要があります。
system32 を使用してはいけない理由はありますか? このプロジェクトに携わった過去の開発者は、この VB6 プロジェクトで使用されるアセンブリ ファイルを system32 に配置しましたが、問題はないようです。
dll を system32 の場所に登録すると、オートメーション エラーが発生します。dll を別の場所 (つまり C:/) に登録すると、VB6 からクラス ライブラリへのメソッド呼び出しが期待どおりに機能します。何を与える?
GAC を使用して DLL を登録することはありません。仕方ないよ。
どんな助けでも大歓迎です。
マイク
com - Regasm は mscoree.dll をレジストリ キー InprocServer32 に書き込みます
.NET アセンブリを regasm.exe に登録すると、レジストリ キー
HKEY_CLASSES_ROOT\CLSID{111E32AD-4BF8-495F-AB4D-6C61BD463EA4}\InprocServer32
「mscoree.dll」に設定されています。
ただし、C で記述された既存の COM サーバーを模倣しようとしています。この古い COM サーバーを登録すると、InprocServer32 がこのコンポーネントへのフル パスに設定されます。
残念ながら、既存のシステム (私が変更できないプラグイン ホスト) は、この値を読み取って使用します。「mscoree.dll」の値と混同されています。
私の解決策は、このレジストリ エントリに手動でパッチを適用することかもしれませんが、regasm が "mscoree.dll" を InprocServer32 に書き込む理由を理解したいと思います。
.net - .net コンポーネントで regasm と caspol を複数回実行する必要があるのはなぜですか?
regasm
コンポーネントでとcaspol
を.NET
複数回実行する必要があるのはなぜですか?
.NET
別のマシンに常駐するコンポーネントを使用する COM クライアントがあります。したがって、このコンポーネントで実行する必要がregasm
ありcaspol
ます.NET
。同じマシンで同じコンポーネントに対してこれを再度実行する必要がある原因は何ですか?
regasm
andの効果はcaspol
一時的なものですか? または、これを再度行う必要がある場合、誰かがマシン上の何かをリセットまたはクリアしたと想定できますか?
編集: capsol のみを実行する必要があります。
.net - Visual Studioセットアッププロジェクトを使用して、COM相互運用機能DLLを自動的に登録およびGACします
COM相互運用機能用の.NETアセンブリを作成しましたが、開発マシンで正常に機能しています。私は現在、VisualStudioの「セットアッププロジェクト」を使用してDLLをターゲットマシンに展開する方法を理解しようとしています。VIsual Studioセットアッププロジェクトを使用して次のことを行うにはどうすればよいですか?
- アセンブリを登録します(現在はを使用してい
regasm
ます)。 - アセンブリをGACにインストールします(現在はを使用しています
gacutil
)- 「ターゲットマシンのファイルシステム」の「グローバルアセンブリキャッシュフォルダ」を認識しています。セットアッププロジェクトにアセンブリを含める際に特別なことはありますか?
その他のアドバイスや懸念事項をいただければ幸いです。