我知道这会将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
答案 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可以处理删除。