17

nuspecファイルに何かを追加して、パッケージがNuGetを介してプロジェクトのビルド前またはビルド後のイベントにインストールされるようにすることが可能かどうか誰かが知っていますか?

4

3 に答える 3

22

ユーザーのPostBuildEventプロパティを編集することは、ビルド後のアクションをプロジェクトに追加するための間違った方法だと思います。推奨される方法は、プロジェクトファイルにインポートされたMSBuildターゲットにカスタムアクションを配置することだと思います。NuGet 2.5以降、パッケージに「ビルド」フォルダー(コンテンツおよびツールと同じレベル)が含まれ、そのフォルダーに{packageid}.targetsファイルまたは{packageid}.propsファイルが含まれている場合、NuGetは自動的にインポートを追加します。パッケージをインストールするときにプロジェクトファイルに追加します。

たとえば、MyNuGetというパッケージがあります。以下を含むファイルbuild\MyNuGet.targetsを作成します。

<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="MyNuGetCustomTarget" AfterTargets="Build">
        <Message Importance="high" Text="Message from MyNuGetCustomTarget. Configuration: $(Configuration)" />
    </Target>
</Project>

これにより、標準のビルドターゲットの後に実行するように構成されたカスタムターゲットが作成されます。NuGetは、インストール時にインポートを挿入し、アンインストール時に削除する処理を行います。

于 2014-08-26T20:11:30.753 に答える
9

これは、NuGetパッケージのinstall.ps1PowerShellスクリプトからビルドイベントを設定するための少しクリーンな方法です。

$project.Properties.Item("PostBuildEvent").Value = "your build event here"
于 2013-07-02T11:01:23.137 に答える
6

.nu​​specファイル自体ではありませんが、nuspecinstall.ps1を使用してパッケージに追加できます。これが私がしていることです(それがそれを行うための最良の方法であるかどうかはわかりませんが、それは機能します):

param($installPath, $toolsPath, $package, $project)

$project.Properties | where { $_.Name -eq "PreBuildEvent" } | foreach { $_.Value = "copy `"`n`$(ProjectDir)Web.`$(ConfigurationName).config`" `"`$(ProjectDir)Web.config`"" }
于 2013-01-08T19:18:29.933 に答える