問題タブ [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 - DLL をロックせずに、生成された VB.Net DLL アセンブリをプログラムで登録する
基本的なコード生成を行う単純な VB.Net 4 WinForms アプリケーションがあります。コード生成によって DLL アセンブリが完全に正常に作成されますが、DLL が生成されるたびに、プログラムで GAC に登録する必要があります。登録する必要があるのは、デプロイ時に VB6 アプリケーションから CreateObject を介して呼び出される COM オブジェクトであるためです。ええと、私は知っています。
DLL の生成、プログラムによる登録、VB6 アプリケーションからの生成された DLL の使用など、これらすべてが正常に機能します。
問題は、コード生成を行うアプリケーションが、プロセスによって DLL がロックアウトされる前に DLL を 1 回しか生成できず、EXE を停止して再度起動しない限りロックを解除できないことです。これにより、コード生成ツールのユーザーは、アプリケーションを再起動せずに DLL を変更して再コンパイルすることができなくなります。
ロックを引き起こすコードは次のとおりです (変数 "asm" を定義する行にあります)。
Web 上の多くの記事で見たように、アセンブリ定義を別の AppDomain にスローしようとしましたが、思いついた実装はどれも機能しませんでした。実際、それらのほとんどすべてが、生成されたアセンブリになり、AppDomains の両方で定義されました。ReflectionOnly アセンブリの読み込みも試みましたが、関数を登録するには、アセンブリをリフレクション モードではなくアクティブ モードで読み込む必要があります。
それがスローする実際のエラーは、この素晴らしい宝石です:
これを修正するために私ができることについて誰かが私に答えを持っていれば、私は大いに感謝しています! 前述のように、最初の DLL コンパイルはうまく機能しますが、アプリケーション プロセスによってアセンブリがロックされているため、その後の DLL のコンパイルは失敗します。
私の完全なコンパイラ クラス定義は以下のとおりです。私が試したいくつかの追加のものを残しました。乱雑で申し訳ありません:
.net - regasm RA0000: タイプが登録されていません
C++/CLI アセンブリがあります (Windows 7 に付属する .NET 3.5 用にコンパイルされています)。アセンブリは としてマークされComVisible(true)
ます。2 つのクラスと 1 つのインターフェイスが含まれています。両方のクラスは としてマークされているComVisible(false)
ため、重要ではありません。InterfaceType(ComInterfaceType::InterfaceIsIUnknown)
インターフェイスは、特定の GUIDでマークされます。このインターフェイスを登録する必要があります。
を使用してこのアセンブリを登録しようとするとRegAsm.exe AssemplyName
、次の警告が表示されます。
私のアセンブリは、メイン アセンブリと同じディレクトリにある 3 つの他のアセンブリに依存しています。そのうちの 2 つは問題なく登録され、3 つ目は としてマークされていませんComVisible
。
アセンブリを登録できない理由はありますか?
c# - c# ContextMenu ハンドラ
このコードを使用して、アプリ用の独自のコンテキスト メニュー ハンドラーを開発しようとしました: http://www.codeproject.com/KB/shell/ratingcolumn.aspx
しかし、何も起こりませんでした。次に、そのコードをコンパイルし、dllを構築して使用してみました
それを登録するために、これは私が返信として得たものです
ただし、新しいファイル評価メニューは表示されませんでした(ウィンドウの再起動、関連付けの更新、メニューなどすべてを試しました)。何か不足していますか?必要に応じて DLL を登録しますか?
interop - Excel で VBA7 から参照される 64 ビット アセンブリで .NET Framework ライブラリを使用する
標準の .NET フレームワーク ライブラリ (System、System.Windows.Forms) を使用する C# で記述されたライブラリがあります。このライブラリは、そのクラスと同様に COMVisible です。2 つのクラスしかありません。 - TestClass (1 つのメソッドを持つクラス) - TestForm (空のフォーム)
ここで提案されているようにアセンブリを登録しました: C# COM DLL: do I use Regasm, or Regsvr32?
次に、Excel アドインに移動し、生成された .TLB ファイルへの参照を追加しました。
「TestClass」のインスタンスを作成し、そのメソッドを問題なく呼び出すことができますが、「TestForm」のインスタンスを作成しようとすると、次のエラーが表示されます。
クラスを機能させようとしたときに見た問題によると、問題は、依存関係の 1 つ (System.Windows.Forms と推測しています) が Excel によって検出されないことです。
64 ビット Office アドインから .NET で記述されたフォームを開くにはどうすればよいですか?
前もって感謝します
c# - Regasm /codebase は、copylocal=true の設定時に指定されたファイルが見つからないと言って失敗します
regasm /codebase を使用してアセンブリを登録しようとしています。すべて正常に動作しますが、プロジェクトの要件により、参照されている dll の copylocal プロパティを false に設定する必要があります。これが完了すると、依存する dll ファイルが見つからないと言って regasm が失敗します。copylocal が false に設定されている場合、すべて正常に動作します。dll は常に共有フォルダーに存在します。
visual-studio-2008 - Visual Studio 2008 を使用して .dll ファイルを展開する方法は?
クラス ライブラリ プロジェクトとして作成されたデスクトップ アプリケーションと BHO プラグインを含む VS 2008 でインストーラーを作成しています。手動で、このコマンド [regasm /codebase "myPlugin.dll" register] を使用して myPlugin.dll を登録できますが、セットアップ プロジェクトでこれを実現する方法がわかりません。
.net - regasm を使用して .Net COM を SingleUse として登録できますか
SingleUseフラグを使用して .Net COM クラスを登録できますか?
私が SingleUse を使用したい理由は、それ以外の場合、COM インスタンス (クライアント アプリケーションは異なるデータベース接続文字列を持つ 2 つのインスタンスを使用する) 内の静的フィールドが共有され、COM インスタンスが同じデータベースにアクセスすることになるからです。
c# - アクティブな x コンポーネントからオブジェクトを作成できません
C# で記述したアクティブな x コンポーネントに問題があります。dll を regasm に登録したにもかかわらず、現在アクティブな x オブジェクトを作成できません...
クラスからの私のコードは次のとおりです。
そして、ここにインターフェースがあります:
vb スクリプトで単純な CreateObject を試すと、
私も試しました:
次のエラーが表示されます: 800A01AD ActiveX コンポーネントはオブジェクトを作成できません
他の誰かが同じ問題を抱えていましたか?
編集:OLEビューアにもコンポーネントが表示されます...
ありがとう
com - COM 可視アセンブリを HKCU に登録する方法 (MSI なし)
regasm.exe は、システム全体で HKLM に COM 可視アセンブリを登録することしかできないようです。MSI インストーラーを使用せずに、ログインしているユーザーに対してのみ行う方法はありますか?
regasm を使用して .reg ファイルをダンプし、それを処理して自分でレジストリ エントリを追加することを検討しました...回避できるのであれば、ホイールを再発明したくありません。
.net - これは、COMに.NETタイプを登録するための可能なアプローチですか?
.NETアセンブリがあり、regasm.exeを使用してCOMに登録しています。tlbは、ExcelのVBAでコードを記述するためにユーザーが使用します。
regasm / regfileを実行しましたが、すべてのレジストリエントリが「HKEY_CLASSES_ROOT\」に分類されていることがわかります。* HKEY_CLASSES_ROOT *にレジストリキーを書き込むには管理者アクセスが必要なため、すべてのユーザーのマシンでregasmを実行するための管理者制約があります(悲しいことに)。
私の質問は、これを「HKEY_LOCAL_MACHINE」または「HKEY_CURRENT_USER」に書き込むように変更した場合、COM相互運用機能は引き続き機能し、Excelは私の型を検出できるかどうかです。
このようにして、ユーザーがレガスムを実行するのではなく、この新しいregファイルを実行できるように、ユーザーへの特権を大幅に減らすように交渉できると考えています。
ありがとうマニ