私のアプローチは、プラグインを別のファイルとしてプロジェクトに追加することです。そのためには、インストール スクリプトが必要です (これについては、NuGet のドキュメントを参照してください)。
これに対する私の解決策は、次のスクリプトです。
param($installPath, $toolsPath, $package, $project)
Function add_file($file)
{
$do_add = 1
foreach($item in $project.DTE.ActiveSolutionProjects[0].ProjectItems)
{
if ($item -eq $file)
{ $do_add = 0 }
}
if ($do_add -eq 1)
{
$added = $project.DTE.ItemOperations.AddExistingItem($file)
$added.Properties.Item("CopyToOutputDirectory").Value = 2
$added.Properties.Item("BuildAction").Value = 0
}
}
add_file(<file1>)
add_file(<file2>)
もちろん、ユーザーがパッケージをアンインストールするときは、クリーンアップする必要があります。
param($installPath, $toolsPath, $package, $project)
Function remove_file($file)
{
foreach($item in $project.DTE.ActiveSolutionProjects[0].ProjectItems)
{
if ($item.Name -eq $file)
{
$item.Delete()
}
}
}
remove_file(<file1>)
remove_file(<file2>)