読者です 読者をやめる 読者になる 読者になる

がりらぼ

WindowsRuntimeの応援ブログ

Nugetでパッケージインストール時に中のファイルのビルドアクションを変更する

Nugetでパッケージ内にビルドアクションを「コンテンツ」とか出力ディレクトリにコピーを「常にコピーする」とかに自動で設定しておきたいファイルをおきたいときがあります。

そういうときはNugetパッケージのToolsフォルダ内のinstall.ps1というスクリプトを置いて、スクリプトからファイルプロパティをいじります。

パッケージはこんな感じで今回はipagithic.fntファイルのビルドアクションをコンテンツにします。

f:id:garicchi:20150601185016p:plain

install.ps1はこんな感じ

param($installPath, $toolsPath, $package, $project)
function Recurse($dir){
    foreach($i in $dir)
    {
        Recurse($i.ProjectItems)
        if($i.Name -eq "ipagothic.fnt")
        {
            $i.Properties.Item("BuildAction").Value = [int]2
            $i.Properties.Item("CopyToOutputDirectory").Value = [int]2
        }
    }
}

Recurse($project.ProjectItems);

ProjectItemの階層をたどって、目的のファイルがみつかったときにプロパティを変更します。

これでパッケージインストール時に自動でファイルのビルドアクションを変更できるようになりました。