我的测试应用非常简单:
using System;
using System.Linq;
using System.Management.Automation;
namespace CoreTest
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Waiting...");
Console.ReadKey();
using (var ps = PowerShell.Create())
{
ps.Commands.AddCommand("Get-Host");
var result = ps.Invoke();
Console.WriteLine(result.FirstOrDefault()?.Members?["Name"]?.Value);
}
Console.WriteLine("Waiting...");
}
}
}
它所做的就是使用powershell显示主机名,它主要起作用。
然而,构建部分非常混乱。
runtimes
文件夹,我在不同平台目标的文件夹中使用了dll(System.Management.Automation.dll
,Microsoft.PowerShell.SDK.dll
等)的副本(win10-x64
,{ {1}}等等。
文档表明,这种(依赖于框架的部署)是部署需要应用程序的小型.net核心安装的方式,但正如您可以看到简单的文件夹大小绝对不是最理想的。linux-x64
添加到RuntimeIdentifiers
文件中,大小确实变小了(大约70MB),但结果仍然拒绝在我的测试ubuntu机器上工作:
我错过了什么?
所有我想要的是合理大小的文件夹,dll保证在目标机器上运行 - 比如Ubuntu one。