【问题标题】:Running Powershell in .NET solution post-build in a cross-platform way以跨平台方式在构建后的 .NET 解决方案中运行 Powershell
【发布时间】:2020-05-02 02:15:21
【问题描述】:

如果我想在 Visual Studio 中构建后运行 Powershell 脚本,我可以在项目属性的构建后事件中这样做:

"C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe" -file $(SolutionDir)Powershell\Post-Build.ps1

这包含在项目文件中,并受到dotnet build 的尊重,因此它也适用于命令行。

Powershell 二进制文件的路径似乎在所有包含 Powershell 的 Windows 系统上都有保证,因此 PS 的绝对路径不是问题。

这一切都很棒。但是我将如何重写对powershell bin 的引用,使其跨平台工作?有没有办法在非 Windows 平台上利用 PS Core (pwsh) 来解析 PS 二进制文件的路径?

【问题讨论】:

  • PowerShell Core 和 PowerShell 大部分是兼容的,但还不完全兼容,因此使用其中一个似乎不是最佳选择。简单地强制安装 PowerShell Core 并在路径中怎么样?这在 Windows 上也是可行的,然后你可以简单地使用 pwsh 普遍。

标签: .net visual-studio powershell .net-core


【解决方案1】:

尽管它们可能很接近,但 PowerShell Core 与 Windows PowerShell 的功能并不是一对一的匹配。 PowerShell Core 是 PowerShell 6+,而 Windows PowerShell 是 5.1 及更早版本。如果你想要一个跨平台的解决方案,这里的正确答案是使用 PowerShell Core 作为标准 PowerShell 版本,并确保它作为 Windows 和 Linux 节点的依赖项安装。

【讨论】:

  • 如果我要使用 Powershell Core,你会推荐 Jeroen Mostert 在 cmets 中给出的解决方案吗?需要pwsh 在路径中吗?
  • 在 Windows 上,pwsh 在安装后应该已经在 PATH 上。在 Linux 上,入口点通常会位于 PATH 上的某个位置。无论哪种情况,您都应该确保 pwsh 在 PATH 上,如果不在则添加它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-07
  • 2017-03-11
  • 2016-10-24
相关资源
最近更新 更多