You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ilc预编译.NET二进制文件时遇“Main含参数但类库不支持”错误

解决.NET混淆后Native AOT编译报错问题

问题根源

你遇到的Main() has parameters, but the class library doesn't support them错误,本质是手动调用ilc时未正确标记目标为控制台应用,且混淆对象选错了(你混淆了AOT预发布的二进制文件,而非IL中间代码)。Native AOT的正确流程是基于IL代码编译,而非直接处理已AOT的文件。

修正步骤

1. 修复原始C#代码

确保Main方法符合控制台应用的标准声明(补充返回类型,增加数组越界判断):

public static class Program {
    public static void Main(string[] args) {
        if (args.Length > 1)
            Console.WriteLine(args[1]);
        Console.WriteLine("test");
    }
}

2. 调整Obfuscar配置文件

混淆对象改为编译后的IL DLL(而非AOT发布产物),修正路径配置:

<?xml version='1.0'?>
<Obfuscator>
  <Var name="InPath" value=".\bin\Release\net8.0" />
  <Var name="OutPath" value=".\obf" />
  <Var name="KeepPublicApi" value="false" />
  <Var name="HidePrivateApi" value="true" />
  <Var name="RenameProperties" value="true" />
  <Var name="RenameEvents" value="true" />
  <Var name="RenameFields" value="true" />
  <Var name="UseUnicodeNames" value="true" />
  <Var name="HideStrings" value="true" />
  <Var name="OptimizeMethods" value="true" />
  <Var name="SuppressIldasm" value="true" />
  <Module file="$(InPath)\BUILD.dll" />
</Obfuscator>

3. 重构构建脚本

采用dotnet publish触发Native AOT编译(无需手动调用ilc),流程为:构建IL DLL → 混淆 → 基于混淆后的IL DLL做AOT发布:

@echo off
:: 1. 生成未混淆的IL DLL
dotnet build -c Release

:: 2. 混淆IL代码
Obfuscar.console obfuscar.xml

:: 3. 基于混淆后的DLL执行Native AOT发布
dotnet publish -c Release -r win-x64 --self-contained true /p:PublishAot=true /p:OutputPath=.\aot-output /p:InputAssembly=.\obf\BUILD.dll

4. 项目文件补充配置(可选)

确保项目文件BUILD.csproj标记为控制台应用,避免编译器误判为类库:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
  </PropertyGroup>
</Project>

验证结果

执行脚本后,.\aot-output目录下会生成混淆后的Native AOT可执行文件BUILD.exe,运行后可正常输出内容,且反编译会显示已完成代码混淆。

内容的提问来源于stack exchange,提问作者user21053170

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 06:55:08