2011-02-17 3 views
0

あなたが間違っているかどうかを知ることができるかどうか、私は思っていました。COMのためのアセンブリを登録しましたが、デベロッパーコンピュータでしか動作しません

私はC#でビルドしたCOMのDLLアセンブリを持っていますが、SilverlightのブラウザからCOMオブジェクトを取得しようとしています。私はSiverlightアプリケーションをコンピュータ間で移動したいので、すべての必要なファイルをzipに入れて、アセンブリを登録する次のようなバッチインストーラを実行します:

cd%windir%\ Microsoft.NET \ Framework \ v4 .0.30319 \ RegAsm.exe "%USERPROFILE%\ My Documents \ Homework Clock \ windowsHook.dll"/tlb/nologo

私のアプリケーションはアセンブリを検出し、devのコンピュータでうまく動作しますが、アプリケーションを移動すると(dllと他の必要なファイルと一緒に)テスト用コンピュータに、私のバッチファイルは登録に成功したと言いますが、アプリケーションはそれを見つけられません。

しかし、テスト用コンピュータでC#を使用してアセンブリを再構築し、devコンピュータから移動したDLLをリビルド済みDLLに置き換えると、アプリケーションは問題なく動作します。私のアプリケーションを使用したい場合は、C#を使用してアセンブリを再構築する必要がない場合、私のクライアントにとっては便利なので、これを修正する方法があるかどうか疑問に思っていました。

私はこの問題を少し見て、私のアセンブリは強力なアセンブリではないと思っていました。私はC#が自動的にそうすると思いますので、バッチファイルでやってみました。アセンブリに強い名前を付けるために暗号キーを生成するために必要な 'al'と 'sn'コマンドを認識し、C#プロジェクトプロパティの '署名'タブでそれをやってみましたが、同じ問題が発生しました。任意のアイデアをどのようにこれを修正するには?

答えて

1

VSで再構築するときに動作する理由は、Regasm.exeが/ codebaseオプションで実行されるためです。アセンブリをGACに入れる予定がない場合は必須です。

+0

おかげさまで、前に私は明らかに私は適切なDLLを持っていなかったが、明らかにコードベースを試みたが、今は "すべてのタイプが正常に登録された"とそれは動作します!ありがとう:) – Austin

0

C#が自動的にアセンブリに厳密な名前を与えるものではありません事前に

感謝。 Visual Studioを使用している場合は、プロジェクトの[プロパティ]ページを開き、[署名]タブを表示します。アセンブリに署名をチェックし、新しい強力な名前のキーファイルを生成します。プロジェクトをビルドすれば、既存のバッチファイルで何をする必要があるのでしょうか。

+0

ありがとう、今私は、バッチファイルのコマンドを使用しなければならなかったdll強い名前を付けました:D – Austin

+0

GACにアセンブリを配置する予定がない場合は、厳密な名前は必要ありません。 – sharptooth

関連する問題