了解.Net Core和Mono

时间:2017-11-22 14:09:44

标签: .net linux .net-core

  1. .Net Core 中开发应用程序时, .NET 依赖项和DLL是否嵌入在应用程序中?这是否意味着我 NOT 需要在客户端PC上安装.Net依赖项?
  2. 如果我为Linux开发 .Net Core 控制台应用程序,是否需要在装有Linux(客户端)的PC上安装 Mono
  3. .Net核心应用程序是否与Android兼容?

2 个答案:

答案 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可以与共享框架一起运行,这意味着部署规模较小,但必须安装共享框架版本。

  1. 由于Android是Linux - 并且您没有在x86-32处理器或ARM-64处理器上运行的Android,因此.NET-Core应该与Android兼容。我从未测试过那个前提。可能会带来错误。 ARM支持是粗略的。
  2. 但是,我不清楚你想在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以了解有关不同部署选项的更多信息。