我正在寻找一种具有以下参数的语言:
简单易读的语法。
能够轻松创建 Windows 用户界面。
对 Windows 应用程序的本机支持。
卓越的性能和快速的启动时间。
可移植性,无需大量安装,例如 10-20 GB Visual Studio IDE。
它应该已经被广泛使用并拥有大量社区。
我发现VB6满足了我的需求,但不幸的是,它不再被支持。因此,我尝试了VB .NET。我发现转换非常容易,而且与 C#/C++ 相比,VB 代码更具可读性和简洁性。正如我所提到的,我不想安装任何东西,所以我没有尝试 .NET 6 和 7。我的目标是尽可能利用
vbc.exe
等内置工具或便携式工具。然而,.NET 框架的问题在于,无论代码的重要性或使用的语言(VB 或 C#)如何,启动时间始终保持在 1-2 秒之间。相比之下,VB6 应用程序会立即启动。下面是一个用 VB .NET 编写的示例:
Imports System.Windows.Forms
Imports System.Drawing
Public Class Form1
Inherits Form
Private WithEvents button As New Button()
Private WithEvents textBox As New TextBox()
Public Sub New()
button.Text = "Browse"
button.Location = New Point(10, 10)
Me.Controls.Add(button)
textBox.Location = New Point(10, 40)
Me.Controls.Add(textBox)
End Sub
End Class
Module Module1
Sub Main()
Application.Run(New Form1)
End Sub
End Module
我做了什么:
1.
CD C:\Windows\Microsoft.NET\Framework64\v4.0.30319
NGEN update
我尝试了
vbc.exe
(和csc.exe
)编译器的各种选项,例如/optimize[+|-]
和/platform
。
不同版本的.NET框架(32位和64位),包括版本2、3.5和4.x.x.
使用
msbuild.exe
使用以下命令编译我的应用程序:
msbuild /property:Configuration=Release;UseDotNetNativeToolchain=true MyFile.vbproj
,
这是 MyFile.vbproj 的内容:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" Sdk="Microsoft.NET.Sdk" >
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>
<ItemGroup>
<Compile Include="DiCalc.vb" />
</ItemGroup>
<Target Name="Build">
<Vbc Sources="@(Compile)" OutputAssembly="DiCalc.exe" TargetType="WinExe"/>
</Target>
</Project>
提前致谢。
首先,我的 vb.net 应用程序在启动时都没有表现出这样的延迟。
如果您创建 vb.net windows .net 框架表单应用程序,则启动时间不会显示任何延迟,甚至没有明显的启动延迟。
那么,让我们打个招呼吧:
文件->新项目。
这个:
因此,让我们构建 hello world 类示例。
我们在表单上拖动一个按钮,从而编写以下代码:
然后 f5 运行..
(实际上,我们使用鼠标并点击开始按钮)。
当然,我们从 Visual Studio 运行它,但让我们右键单击该项目,选择“在资源管理器中打开文件夹”,然后从 Windows 资源管理器运行 .exe 文件(不是从 Visual Studio 运行/启动)。
所以,我们现在有了这个文件夹,当我单击 .exe 文件时,我没有看到 2 秒的等待,也没有看到 1 秒的等待,事实上,表单在没有任何感知延迟的情况下启动全部。
所以,我看到了这个:
现在,我使用 screen to gif,它以每秒 15 帧的速度运行,所以你看到的比在你自己的计算机上执行此操作“有些慢”。
但是,当我单击 .exe 文件时,screentogif(我使用的屏幕捕获软件)确实显示了一个圆圈。我没有计算捕获的帧数,但看起来不超过 1-2 帧。
换句话说,我们加载和运行该 .exe 文件的时间远低于 1/10 秒……
即使我使用 .net core 创建上述相同的项目,我也看不到也找不到任何明显的延迟。
所以,我不知道 .net 有一些大的延迟或启动时间,而且它真的不需要看起来与 VB6 .exe 的启动时间有任何不同。
这表明这里还存在其他一些问题,例如病毒软件扫描并在没有运行病毒扫描软件并检查该 .exe 文件的情况下阻止 .exe 启动。
或者,有一些网络文件夹或其他一些重要细节您没有与我们分享。
事实上,如上所示,从 Visual Studio 2022 中按 f5 甚至不需要 2 秒。但是,来自给定项目的编译后的 .exe 文件肯定会启动,并在一秒钟内运行。
请记住,我是在笔记本电脑上运行它,而不是高端规格的笔记本电脑,更不用说更好、更强大的台式电脑了。