答案 0 :(得分:2)
问题:
没有依赖项未嵌入到应用程序中(.NET中没有静态链接) 是的,当您发布(自包含)时,依赖项将作为单独的文件添加 如果您的应用程序是.NET-Core应用程序,则 NOT 需要安装.NET-Core框架。你也不需要单声道 您可以为每个平台执行自包含部署:
Windows的X86-32:
dotnet restore -r win-x86
dotnet build -r win-x86
dotnet publish -f netcoreapp2.0 -c Release -r win-x86
Windows的x86-64的:
dotnet restore -r win-x64
dotnet build -r win-x64
dotnet publish -f netcoreapp2.0 -c Release -r win-x64
Linux-x86-32: .NET-Core不支持
Linux的x86-64的:
dotnet restore -r linux-x64
dotnet build -r linux-x64
dotnet publish -f netcoreapp2.0 -c Release -r linux-x64
Linux ARM(Android / ChromeOS)
dotnet restore -r linux-arm
dotnet build -r linux-arm
dotnet publish -f netcoreapp2.0 -c Release -r linux-arm
Linux-arm-64:不支持.NET-Core
这会添加所有依赖项,包括.NET-Core运行时库。 如果使用的DLL引用native-dll(它提供为嵌入式资源),但是仍然没有提供必要的C-Runtime库(例如,当native-dll / .so是动态链接的时候 - 那么你仍会遇到问题 - 例如如在SkiaSharp中。)
此外,.NET-Core可以与共享框架一起运行,这意味着部署规模较小,但必须安装共享框架版本。
但是,我不清楚你想在Android上使用.NET Core做什么。 由于.NET没有实现任何Android-UI接口。 Xamarin-Forms可能支持使用.NET-Core的Android-UI - 它确实支持单声道。但是,您可以在Android或控制台应用程序上运行Web / other-server。
请参阅CoreDroid
答案 1 :(得分:2)
Mono和.NET Core是两种不同的技术。
Mono由Miguel de Icaza创建,最初设计为.NET Framework for Linux和MacOS的一个版本。因此,它有许多与.NET Framework相同的API。
.NET Core是.NET Standard的跨平台实现。因此,它只能访问.NET Standard中列出的API。
使用.NET Core构建的应用程序需要在目标计算机上安装.NET Core运行时才能运行它们(取决于您是执行自包含部署还是依赖于框架部署)。可以通过前往dot.net/core获得.NET Core运行时和SDK。
同样,使用Mono构建的应用程序将需要在目标计算机上安装Mono运行时。
正如Lexi-Li指出的那样,我将查看The official documentation for .NET Core以了解有关不同部署选项的更多信息。