14

パッケージがプロジェクトにインストールされるときに、「ローカルのコピー」が false に設定された dll への参照を追加する NuGet パッケージを作成する方法はありますか?

「install.ps1」ファイル内のある種のスクリプトになると思います。

4

2 に答える 2

20

はい、ご想像のとおり、install.ps1 でこれを行うことができます。

これは、実行するたびに System.dll のフラグを反転させる install.ps1 の例です。この例を使用して、やりたいことを行う方法を理解できるはずです。

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

foreach ($reference in $project.Object.References)
{
    if($reference.Name -eq "System")
    {
        if($reference.CopyLocal -eq $true)
        {
            $reference.CopyLocal = $false;
        }
        else
        {
            $reference.CopyLocal = $true;
        }
    }
}

しかし、この MSDN ドキュメントが役立つはずです。

于 2012-06-19T17:43:59.830 に答える
7

この install.ps1 は、あなたが求めていることを実行すると思います。パッケージによって追加されたすべての DLL には、Copy Local の値として false が与えられます。ここでは、AssemblyReferences リストからすべての名前を取得する以外に何もしていないことに注意してください。ターゲット フレームワークなどに基づいた条件が必要な場合は、さらに何かを行う必要がある場合があります。

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

$asms = $package.AssemblyReferences | %{$_.Name}

foreach ($reference in $project.Object.References)
{
    if ($asms -contains $reference.Name + ".dll")
    {
        $reference.CopyLocal = $false;
    }
}
于 2012-07-12T00:04:23.687 に答える