如何通过 powershell 更改项目引用的 CopyToOutputDirectory

How to change CopyToOutputDirectory on project reference via powershell

我创建了一个包含第 3 方程序集的 nuget 程序包,这样我就不必将它们放在每个要引用它们的存储库的 lib 文件夹中。第 3 方库的性质是我无法将它们的引用设置为复制到输出目录(这会导致使用它们的部署脚本执行的错误)。

为了解决这个问题,我想我可以在我的 nuget 包中创建一个 install.ps1 脚本,并将 CopyToOutputDirectory 属性 更改为 Never。我无法在网上找到任何这方面的例子。我找到的唯一样本与 ProjectItems 集合中存在的内容文件相关(例如 Nuget - Setting CopyToOutputDirectory on content in subfolders)。

我试图根据其他一些 google 搜索修改它并想出了这个方法来获取参考

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

$configItem = $project.Object.References | Where-Object { $_.Name -eq 'ReferencedDll' }

现在 $configItem 确实保留了引用,我已经通过 Write-Host $configItem.Name 验证了这一点,但此时我无法弄清楚如何更改 CopyToOutputDirectory 或找到任何 MS 文档引用的对象模型。谁能帮我指明正确的方向?

我意识到我混淆了 CopyLocal 和 CopyToOutputDirectory。解决方案是像我上面那样设置 $configItem 后执行此操作:

$configItem.CopyLocal = $false