2011-02-27 22 views
1

Webで.NET COMオブジェクトを登録するすべての例では、ジョブを実行するためのツール "regasm"が表示されます。誰もがそう!
しかし、それは私のために働いたことはありません!私はそれを克服しようと疲れている!私の唯一の解決策はregsvr32で、これは私がC++で定義できる関数を必要とします。
なぜ私はそれがちょうどうまくいかないと教えてください!regasmはうまくいきません

私の4台のコンピュータと3台の仮想マシン(Windows 7を2000台まで稼動している)で動作しないことを考慮すると、誰でも私にレガズムコールの実例を教えていただけますか?私はばかだと思う。

+0

私たちのために「動作しない」と定義できますか? –

答えて

8

[ComVisible] .NETアセンブリをRegsvr32.exeで登録することはできません。 Regsvr32に必要なDllRegisterServerエントリポイントはありません。 Regasm.exeまたはセットアッププロジェクトで動作させる必要があります。後者は、サーバーを別のマシンにデプロイするときに必要です。

障害モードはほとんどありません。その他:

  • /codebaseオプションの使用を忘れた場合。アセンブリをGACにデプロイしない場合に必要です。これは、あなたの開発マシンで行うべきではありません。

  • Regasm.exeのバージョンが間違っています。 64ビットマシンには2つあり、Framework64ディレクトリには、クライアントコードが64ビットの場合に使用するものが含まれています。

  • 昇格されていないコマンドプロンプトから実行します。 Regasm.exeは、レジストリのHKLMハイブに書き込み、UACが積極的に防止するものを書き込みます。これはVistaとWin7の問題です。

もちろん、アセンブリを大きく誤ってしまうことももちろん可能です。 1つ以上のインターフェースやクラスを作成しないようにする[ComVisible]。

+0

Visual C++(.NET)はDLLRegisterServerを実行できます。そのため、regsvr32を使用することができます。とにかく、/ codebaseオプションが鍵でなければなりません。 – Vercas

+1

'/ codebase'が答えでした。最終的にシェルプログラミングに参加してくれてありがとう! – Vercas

0

その可能、私はそれがアセンブリが コピーにBUITたの.NET Frameworkのバージョンに依存し、

以下のコードを貼り付け見つけた私は前にこの挑戦を持っていた、と私はCMDウィンドウにこのコードを実行し、それが を働きました
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\regasm.exe MyAssembly.dll 

あなたのために働く場合は優しく投票してください。

関連する問題