我有一个winform写在.net 7.0有任何方法来编译应用程序到本地代码。我读了很多文章,尝试了很多方法,但似乎他们不支持winform。如果可能的话,你能给予我一个详细的例子吗?
szqfcxe21#
.NET 7仅支持控制台应用程序的原生AOT。从文档中:原生AOT面向控制台类型的应用程序。只有有限数量的库与原生AOT完全兼容。您可以尝试一些社区工作,例如WinFormsComInterop另请参阅:
eoigrqb62#
使用CLI将true添加到项目文件来发布本机AOT。此属性在发布期间启用本机AOT编译。它还支持在构建和编辑期间进行动态代码使用分析。最好将此设置放在项目文件中,而不是在命令行中传递,因为它控制发布之外的行为。XML
Copy <PropertyGroup> <PublishAot>true</PublishAot> </PropertyGroup>
使用dotnet publish -r为特定的运行时标识符发布应用程序。下面的示例将Windows应用程序作为本机AOT应用程序发布到安装了所需系统必备组件的计算机上。
dotnet publish -r win-x64 -c Release
以下示例将Linux的应用程序作为本机AOT应用程序发布。在Linux机器上生成的本机AOT二进制文件只能在相同或更新的Linux版本上工作。例如,在Ubuntu 20.04上生成的原生AOT二进制文件将在Ubuntu 20.04及更高版本上运行,但它不会在Ubuntu 18.04上运行。
dotnet publish -r linux-arm64 -c Release
该应用程序位于publish目录中,包含在其中运行所需的所有代码,包括coreclr运行时的精简版本。查看GitHub上的dotnet/samples存储库中提供的原生AOT示例。这些示例包括Linux和Windows Dockerfiles,它们演示了如何使用容器自动安装先决条件和发布带有本地AOT的.NET项目。使用CLI发布本机AOT
2条答案
按热度按时间szqfcxe21#
.NET 7仅支持控制台应用程序的原生AOT。从文档中:
原生AOT面向控制台类型的应用程序。只有有限数量的库与原生AOT完全兼容。
您可以尝试一些社区工作,例如WinFormsComInterop
另请参阅:
eoigrqb62#
使用CLI将true添加到项目文件来发布本机AOT。
此属性在发布期间启用本机AOT编译。它还支持在构建和编辑期间进行动态代码使用分析。最好将此设置放在项目文件中,而不是在命令行中传递,因为它控制发布之外的行为。
XML
使用dotnet publish -r为特定的运行时标识符发布应用程序。
下面的示例将Windows应用程序作为本机AOT应用程序发布到安装了所需系统必备组件的计算机上。
以下示例将Linux的应用程序作为本机AOT应用程序发布。在Linux机器上生成的本机AOT二进制文件只能在相同或更新的Linux版本上工作。例如,在Ubuntu 20.04上生成的原生AOT二进制文件将在Ubuntu 20.04及更高版本上运行,但它不会在Ubuntu 18.04上运行。
该应用程序位于publish目录中,包含在其中运行所需的所有代码,包括coreclr运行时的精简版本。
查看GitHub上的dotnet/samples存储库中提供的原生AOT示例。这些示例包括Linux和Windows Dockerfiles,它们演示了如何使用容器自动安装先决条件和发布带有本地AOT的.NET项目。使用CLI发布本机AOT