github email
Exe_sigle_file
Apr 1, 2024
One minute read

单文件部署

你能改变的就是你自己。

对于Java和C#最让我感觉到比go最没有可比性的一点就是,go直接就编译成本地二进制文件了,少了保护代码而需要做的混淆操作。但是,现在Java和C#都可以了。当然,如果用mojo后,python也可以了。

01.Java编译成可执行二进制文件

Java编译成二进制的模式来源于GraalVM的操作。

例子来源于GraalVM官网

一个HelloWorld的例子。

public class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello, World!");
  }
}

首先,编译java文件。

javac HelloWorld.java

其次,编程成本地二进制可执行程序。

native-image HelloWorld

最后,运行。

./helloworld
Hello, World!

02.C#编译成可执行二进制

C#现在越来越流行,假以时日,或许可以和Java完全抗衡。

(单从语音本身来说,c#已经超越了java,可是社区却还有很远的路要走)

单文件部署对C#来说也很简单。

首先,在修改项目文件csproj。

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <RuntimeIdentifiers>osx-x64</RuntimeIdentifiers>
    <PublishSingleFile>true</PublishSingleFile>
    <SelfContained>true</SelfContained>
    <OutputType>Exe</OutputType>
  </PropertyGroup>
</Project>

加入输出类型Exe,平台osx-x64,发布单文件PublishSingleFile,自包含SelfContained。

其次,发布。

dotnet publish

在publish文件中找到文件,创建链接文件。(这个步骤可以不用,我主要是创建了一个将发布后的文件链接到执行目录,方便直接运行)

ln -s /Volumes/Transcend/Project/dotnet_core/web/bin/Release/net8.0/osx-x64/publish/web web

Back to posts