NuGet:我如何设置"可见"使用Install.ps1文件将内容设置为false?

时间:2015-03-05 22:42:19

标签: powershell nuget

我知道这会将CopyToOutputDirectory设置为Always $ project.ProjectItems.Item(" test.exe")。Properties.Item(" CopyToOutputDirectory")。Value = 1

但是当我尝试以同样的方式设置Visible时它不会起作用 $ project.ProjectItems.Item(" test.exe")。Properties.Item(" Visible")。Value = 1或" false"或$ false

2 个答案:

答案 0 :(得分:0)

test.exe没有属性项Visible,因此您无法设置值

如果你这样做,你会收到错误

$project.ProjectItems.Item("Program.cs").Properties.Item("Visible")

这将有效,因为CopyToOutputDirectory是一个实际属性

$project.ProjectItems.Item("test.exe").Properties.Item("CopyToOutputDirectory")

答案 1 :(得分:0)

您可以使用Microsoft.Build.Evaluation.ProjectCollection作为替代方案,但以这种方式进行更改需要在安装软件包后重新加载项目。

$buildProject = [Microsoft.Build.Evaluation.ProjectCollection]::GlobalProjectCollection.GetLoadedProjects($project.FullName)
$buildProject.Xml.AllChildren|?{$_.Include -eq "test.exe"} | % { 
    if ($_.HasMetadata -and ($visible=$_.Metadata|?{$_.Name -eq "Visible"}))
    {
        $visible.Value = $false
    }
    else
    {
        $_.AddMetadata("Visible",$false)
    }
}
$buildProject.Save()

但是,它似乎阻止了文件的卸载,我不确定在适当的时候调用Uninstall.ps1是否可以恢复可见性,以便NuGet可以处理删除。