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

了解.Net内核和Mono 在.Net Core中开发应用程序时,.Net依赖项和DLL是否嵌入到应用程序中?这是否意味着我不需要在客户端PC上安装.Net依赖项 如果我为Linux开发一个.Net Core控制台应用程序,是否需要在装有Linux(客户端)的PC上安装Mono .Net核心应用程序是否与Android兼容,.net,linux,.net-core,.net,Linux,.net Core,关于你的问题: 否依赖项未嵌入到应用程序中(在.NET中没有静态链接)。 是的,当您发布(自包含)时,依赖项将作为单独的文件添加。 如果您的应用程序是.NET核心应用程序,则不需要安装.NET核心框架。您也不需要单声道。 您可以为每个平台执行自包含部署: Windows-x86-32: dotnet restore -r win-x86 dotnet build -r win-x86 dotnet publish -f netcoreapp2.0 -c Release -r win-x86 W

关于你的问题:

否依赖项未嵌入到应用程序中(在.NET中没有静态链接)。
是的,当您发布(自包含)时,依赖项将作为单独的文件添加。
如果您的应用程序是.NET核心应用程序,则不需要安装.NET核心框架。您也不需要单声道。
您可以为每个平台执行自包含部署:

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内核支持

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)

Linux-arm-64:不受.NET内核支持

这将添加所有依赖项,包括.NET核心运行库。 如果使用的DLL引用本机DLL(作为嵌入式资源提供),但未提供必要的C运行时库(例如,当本机DLL/.so动态链接时,例如在SkiaSharep中),则仍然可能遇到问题

另外,.NET Core可以与共享框架一起运行,这意味着部署规模更小,但必须安装共享框架版本,然后才能运行

  • 由于Android是linux,而且您没有在x86-32处理器或ARM-64处理器上运行的Android,.NET内核应该与Android兼容。我从未测试过这个前提。可能会有虫子。手臂支撑不牢固
  • 然而,我不清楚你想在Android上用.NETCore做什么。 因为.NET没有实现任何Android UI接口。 Xamarin表单可能支持带有.NET内核的Android用户界面——mono肯定支持。不过,您可以在Android上运行web/其他服务器或控制台应用程序


    请参见

    Mono和.NET Core是两种独立的技术

    Mono由Miguel de Icaza创建,最初设计为Linux和MacOS的.NET Framework版本。因此,它有许多与.NET Framework相同的API

    .NET核心是.NET标准的跨平台实现。因此,它只能访问中概述的API

    使用.NET Core构建的应用程序需要在目标计算机上安装.NET Core运行时才能运行它们(取决于您是执行自包含部署还是依赖于框架的部署)。.NET核心运行时和SDK可通过标题获取

    同样,使用Mono构建的应用程序需要在目标机器上安装Mono运行时


    正如李乐西所指出的,为了了解更多关于不同部署选项的信息,我想看一看。

    从自包含部署部分开始应该会给你答案。在GitHub上有一个针对Android的.NET Core的实验性构建,但由于Miguel de Icaza的团队在Xamarin上所做的工作,我们很快可能不需要它。目标是什么Mono和.NET内核的相似性/相同性?只是为了实现跨平台的.NET吗?@BlueMonkMN:不是。mono和.NETCore不提供相同的功能。Mono为完整的.NET框架提供了一个实现。NET核心仅提供.NET的“核心”版本。如果需要推荐,请使用.NET-Core。但目标类似,请提供.NET的跨平台实现。区别只是.NET Core是一个核心子集,而Mono是另一个供应商的完整实现?如果它有助于@BlueMonkMN,Mono早在2004年就开始了,而.NET Core是在过去几年开始的(Satya Nadella早在2014年就宣布了)。Muno从未如此伟大,因为它最初是使用.NET Framework提供的文档创建的,而.NET核心开发是由.NET基金会(包括微软、谷歌和三星等)完全开放的源代码完成的。
    dotnet restore -r linux-arm
    dotnet build -r linux-arm
    dotnet publish -f netcoreapp2.0 -c Release -r linux-arm