パッケージがプロジェクトにインストールされるときに、「ローカルのコピー」が false に設定された dll への参照を追加する NuGet パッケージを作成する方法はありますか?
「install.ps1」ファイル内のある種のスクリプトになると思います。
パッケージがプロジェクトにインストールされるときに、「ローカルのコピー」が false に設定された dll への参照を追加する NuGet パッケージを作成する方法はありますか?
「install.ps1」ファイル内のある種のスクリプトになると思います。
はい、ご想像のとおり、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 ドキュメントが役立つはずです。
Object
Hanselman は、VSProject インターフェイスに解決を使用します。$project
変数 NuGet は、プロジェクト インターフェイスに解決されます。この 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;
}
}