2016-06-16 4 views
1

すべてのコンパイルで、出力DLLがプログラムで変更され、コンパイルが終わるたびにDLLを再度登録する必要があります。 Visual Studioのコマンドプロンプトregasm mydll.dllとして登録できます。しかし、私は毎回それをやりたいとは思わないし、私はそれを自動的にしたい。いくつかの調査の後、Visual StudioでBuild Events(プロジェクト>プロパティ)から可能であることが検出されました。しかし、以前はBuild Eventsを使った事は一度もありませんでしたが、実際にどのようになっているのかは分かりません。私はの事前ビルドイベントコマンドラインに私のDLLパスを書きますか?RegAsmでDLLを登録する方法VS2013

私のDLLの場所:C:\プログラムファイル(x86の)\オヌル\クライアント\ビン\ client.dll

マイます。regasm場所:C:\ WINDOWS \ Microsoft.NET \ Framework64 V4 \。 0.30319 \ RegAsm.exe

ビルドイベントセクションのビルド前コマンドとビルド後コマンドには、どのような記述が必要ですか?

私はそれらを試しましたが、その中でコンパイルさえしませんでした。 VS Post Build Event

+1

より重要な細部は、古いバージョンを登録解除することです。あなたがしない場合は、あなたのレジストリのかなり大きな混乱を起こすことができます。一般的な必要性を考えれば、これはすべて簡単なチェックボックスであなたの世話をします。プロジェクト>プロパティ>ビルドタブを選択し、 "COM interopに登録"を選択します。どちらの方法でも、これらのレジストリキーは昇格したプログラムによってのみ変更できるため、VSを昇格させる必要があります。ショートカットを右クリックし、[管理者として実行]を選択します。 –

+0

こんにちはハンス、返信いただきありがとうございます。私はそのボックスをチェックし、プロジェクトのすべてのビルドでDLLを登録解除する必要があることを認識しています。私はあなたの答えに従い、すぐに結果を知らせます – onur

答えて

1

RegAsm実行ファイルは.Net Frameworkバージョンフォルダにありますが、デフォルトではパスにはありません。

幸いにも、Post-buildイベントで使用できる2つの環境変数、つまりFrameworkDirFrameWorkVersionが存在します。 Environment Variablesの使い方については、MSDNのドキュメントを参照してください。あなたの特定のケースについては、次のようにビルド後のイベントでの作業を行い

(新しいDLL必要がコンパイルされ、準備ができているので):$(TargetPath)を防ぐために、二重引用符で囲まれているか

$(frameworkdir)\$(frameworkversion)\regasm.exe "$(TargetPath)" 

お知らせあなたのパスにスペースがある場合の事故。

RegAsmは昇格された権限を必要とするので、RegAsmの実行を最初に行うためにVisual Studioを既に起動しておく必要があります。

エラーの診断に[出力のビルド]ペインを使用します。

+0

こんにちはルネ返信ありがとうございます。 ** $(frameworkdir)\ $(frameworkversion)\ regasm.exe "$(C:\ Program Files(x86)\ Onur \ Client \ Bin \ client.dll)のようなPostBuildセクションに書きました。 しかし、それはコンパイルされません。しかしビジュアルスタジオのエラーリストにはエラーはありません。出力結果は - > https://snag.gy/vJ8uxK.jpg どこで見逃しますか? ありがとう – onur

関連する問題