从.NET Core 3.1项目生成本地可执行文件

目录

简介:托管代码的编译?

工作原理:原理

应用领域

样例程序

1.检查Visual Studio安装的组件

2.添加具有ILCompiler的NuGet存储库

3.将依赖项添加到您的项目中

4.为您的应用程序编码

5.生成程序的本地可执行文件

结论


在本文中,我们将看到一个使用.NET Core 3的示例程序。我们将回顾开发人员为生成其应用程序的本地可执行文件而必须遵循的过程。我们将看一下如何检查Visual Studio已安装的组件,添加具有ILCompilerNuGet存储库,将依赖项添加到您的项目,编写应用程序并生成程序的本地可执行文件。

简介:托管代码的编译?

该功能未集成在SDK中,但为C#开发人员提供了一种从.NET Core 3原始.csproj生成机器可执行文件的惊人方法。从我的观点来看,这是您要以专业方式分发软件(这是一种方式:)的关键点。我在一本出色的书中发现了此功能(我不忘提供源代码以供参考):使用.NET Core 3Visual Studio 2019开发多平台桌面应用程序。

借助此工具,.NET Core 3与并发(PythonNodeJava)的性能匹配,从而提高了性能增强的应用程序的开发(最后,C#几乎达到了C ++性能级别)。

工作原理:原理

.NET Core运行时用于生成托管项目的AOT(提前)图像。为了构建该代码,伪编译器将MSIL程序转换为C ++代码,并编译结果以生成应用程序的本地可执行文件(这就是无论您使用哪种OS都需要C ++工具的原因)。它的主要开发人员之一(Microsoft的伙计)Matt Warren 已很好地记录了此完整过程

为了恢复,编译器生成一个真正的本地可执行文件,而IL程序集在运行时由JITJust In Time编译器)编译成本地代码。

应用领域

通过使用本地可执行文件提供的明显好处是可笑的性能改进,缺少安装框架。

最适合使用本地格式的程序主要是台式机应用程序(服务,控制台或GUI),因为对于这种类型的应用程序,本地计算的收益非常明显。

另一方面,对于Web应用程序(Web应用程序和API),由于使用的部署类型不同,收益并不那么明显。在Web服务器环境中,大多数情况下,该框架已安装在计算机上,使用本地可执行文件的方式不那么明显。

样例程序

该示例程序使用.NET Core3。让我们回顾一下开发人员为制作其应用程序的本地可执行文件而必须遵循的过程。

1.检查Visual Studio安装的组件

ILCompiler添加到必需的.NET Core 3框架(以及使用该框架进行开发所需的所有组件)后,需要设置C ++桌面功能。

这是您必须在Visual Studio上安装的C ++功能:

2.添加具有ILCompilerNuGet存储库

专用的NuGet存储库包含将程序编译为真正的本地可执行文件所需的Microsoft.Dotnet.ILCompiler依赖关系。
该存储库URL为:
https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json

您必须将其添加到NuGet源存储库中,如果使用Visual Studio,则必须按照下面的图片1所述添加它。

图片1

3.将依赖项添加到您的项目中

您可以通过如图2所示在可用软件包列表中选择Microsoft.Dotnet.ILCompiler来添加。不要忘记选中包括预发行版本框(因为该软件包仍标有alpha版本)。

图片2

4.为您的应用程序编码

示例控制台应用程序执行阶乘计算,并显示每个等级(计算的每个步骤),并以红色显示最终结果(groovy!)。

这是源代码:

using System;

namespace Net3Factorial
{
    class Program
    {
        static long Factorial(int x)
        {
            long result = 1;
            Console.ForegroundColor = ConsoleColor.Blue;
            for (int i = 1; i <= x; i++)
            {
                result = result * i;
                Console.WriteLine("Step {0}: {1}", i, result);
            }
            return result;
        }

        static void Main(string[] args)
        {
            Console.BackgroundColor = ConsoleColor.Black;
            Console.ForegroundColor = ConsoleColor.Green;
            Console.Clear();

            Console.WriteLine("Enter the Integer for the factorial calculation:");

            int num = Convert.ToInt32(Console.ReadLine());
       
            long f = Factorial(num);
            Console.ForegroundColor = ConsoleColor.Red;

            Console.Write("The Factorial of {0} is: {1}\n", num, f);
        }
    }
}

5.生成程序的本地可执行文件

一旦对项目进行调试和测试,您现在就希望生成应用程序的本地可执行文件。所述.csproj文件具有以包括用于本地可执行的生成目标平台,运行时标识符(RID)。

<runtimeidentifier>win-x64</runtimeidentifier>

如果使用Visual Studio 2019,则可以使用发布命令(项目项上的上下文菜单)来生成本地可执行文件,如图3所示。

图片3

如果您更喜欢命令行,也可以使用CLI命令dotnet publish

结论

生成本地可执行文件是.NET Core 3的显着优势,您将受益于C#的高生产率,其性能几乎与使用经典C ++所能达到的性能一样好。

如本文所述,该ILCompiler库可以在Windows上使用,但在LinuxMac OS X上也可以使用。

发布了71 篇原创文章 · 获赞 152 · 访问量 52万+

猜你喜欢

转载自blog.csdn.net/mzl87/article/details/105058086