次のアクションを実行するビルド後のイベントを実装したいと思います
- DLL 出力の相対パス コピー (すべてのデバッグ ジャズではなく、1 つのファイル)
- 出力DLLをGACに登録する
これはどのように行われますか?
次のアクションを実行するビルド後のイベントを実装したいと思います
これはどのように行われますか?
「Project properties->Build events->Post build events command line」に次のように入力します。
xcopy "$(TargetPath)" "target path" /Y && regasm "$(TargetPath)"
または、次のスニペットをプロジェクト (例: csproj) ファイルに追加します
<PropertyGroup>
<PostBuildEvent>xcopy "$(TargetPath)" "target path" /Y && regasm "$(TargetPath)"</PostBuildEvent>
</PropertyGroup>
空白を含むパスの問題を回避するために、copy コマンド引数の前後に "" を追加することをお勧めします。&& を使用して複数のコマンドを組み合わせることができることにも注意してください。
コンパイルの一部としてこれを実行してもよろしいですか?回避できる場合は、GACではなくソリューションでプロジェクト参照を使用することをお勧めします。ファイルのコピーは1つのことですが、GACへの登録はかなり煩わしいため、コードがコンパイルされている他の環境を検討することをお勧めします。他の開発者のマシン、テスト環境/ビルドサーバーなど。ビルドサーバーがある場合実際には、NAntのようなものをある種の継続的な統合サーバーで使用する必要があります。
私は同じ問題を抱えていましたが、それを機能させるのに少し苦労しました。
私の場合は、 SDLdllを出力フォルダーにコピーするという逆の方法を実行したいと思いました。
copy "$(SolutionDir)SDL\lib\x86\SDL.dll" "$(SolutionDir)$(Configuration)\"
が出力フォルダになることに注意して$(Configuration)
ください(例:デバッグまたはリリース)。
引用符は私が欠けていたものでした。明らかに、右側が。で終わっているときに引用符が必要です\
。したがって、常にそれらを使用する方が安全な場合があります。
他の誰かを5分節約したいと思っています!
PS私はVisualStudio2010を使用しています
質問のステップ 2 では、次のことを好むようです。
"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gacutil" /f /i $(TargetPath)
注: これには、開発マシンにWindows SDKをインストールする必要があります。
関連する問題が発生しました。ここでの回答は役に立ちました (ありがとう!)。
私のシナリオは、関連する DLL を特定の場所に配置する必要がある MEF 依存アプリケーションをデバッグすることでした。以前のビルドを上書きする際に問題が発生したため、スクリプトに削除を追加する必要がありました。
delete $(SolutionDir)FileService\$(ProjectName).dll
copy $(TargetPath) $(SolutionDir)FileService\$(ProjectName).dll
それが誰かにも役立つことを願っています!