希望獲得一些關于在面向 .NET 6 的 C# WinUI 3 應用程式中托管 PowerShell 5.1的指導。我一直在嘗試許多不同的 NuGet 包,不幸的是,我唯一能夠作業的就是呼叫 PowerShell 7。在我的情況下,我需要能夠呼叫 PowerShell 5.1 ...
我嘗試添加的軟體包:
Microsoft.PowerShell.5.ReferenceAssemblies - 不兼容
- 警告 NU1701 包 'Microsoft.PowerShell.5.ReferenceAssemblies 1.1.0' 已使用 '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version =v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8' 而不是專案目標框架'net6.0-windows10.0.19041'。此軟體包可能與您的專案不完全兼容。
Microsoft.PowerShell.SDK - 僅適用于 PowerShell 7,不適用于 Windows PowerShell 5.1
PowerShellLibrary.Standard - 我認為這不適用于在應用程式中托管PowerShell
我可以通過呼叫一個新行程來解決這個問題:
var script = "C:\\scripts space\\MultiLineTestScript.ps1";
var process = new Process
{
StartInfo = new ProcessStartInfo(@"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe", "-ExecutionPolicy Bypass -NoProfile -File \"" script "\"")
{
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
process.Start();
這可行,但話雖如此,如果可能的話,我寧愿使用受支持的 SDK 或參考程式集。特別是為了更輕松地實作運行空間并讓 PowerShell 主機在單獨的執行緒上運行而無需掛起 UI。
我發現了這個:https ://devblogs.microsoft.com/powershell/depending-on-the-right-powershell-nuget-package-in-your-net-project/
是否不支持/不可以在 WinUI 3 .net Core 應用程式中托管 Windows PowerShell 5.1?任何幫助將不勝感激,我通常是 PowerShell 用戶而不是 C# 開發人員,但我正在磕磕絆絆。
uj5u.com熱心網友回復:
tl;博士
在 .NET (Core) 應用程式中托管 Windows PowerShell SDK 是不可能的,正如您已通過 Twitter確認的那樣。
通過 CLI在子行程中呼叫 PowerShell
powershell.exe可能確實是您唯一的選擇。
首先回顧一下:
由于Windows PowerShell基于遺留的純 Windows .NET 框架(與其后繼者跨平臺 .NET Core / .NET 5 框架相反),因此 NuGet SDK 包也允許將 Windows PowerShell 托管在應用,Microsoft.PowerShell.5.1.ReferenceAssemblies.
您的專案面向 .NET 6.0 ( net60),這就是為什么您在構建專案時看到有關目標框架不匹配的警告的原因。
雖然這只是一個警告,而不是錯誤這一事實表明,這種不匹配的組合可能在某些情況下仍然有效,但嘗試在 .NET (Core) 6.0 應用程式中托管 Windows PowerShell 的情況并非如此:拋出例外試圖實體化類:PowerShellSystem.InvalidProgramException: Common Language Runtime detected an invalid program.
使用 Microsoft.Windows.Compatibility包(在本文中討論)沒有幫助。
因此,通過其CLI呼叫 Windows PowerShellpowershell.exe作為子行程確實是您的最佳選擇。
除了速度較慢和資源密集之外,另一個缺點是只能接收文本輸出。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/424200.html
