不使用Visual Studio IDE将具有多个DLL文件的项目编译为单个EXE

时间:2018-10-16 11:24:11

标签: c# compilation

在编译我的项目时,我为每个命名空间创建一个DLL文件,并将它们包含在要构建的EXE中。我的问题是此操作会创建多个文件,并且输出似乎不可移植。

是否可以(以及如何)将所有DLL文件包含到单个EXE文件中?

这是我目前用于构建项目的构建脚本:

#!/bin/sh

if [ -d out ]; then
    rm -rf out/
fi;
mkdir out/

csc /nologo /target:library /out:out/StateMachine.Models.dll \
    StateMachine/Models/*.cs &&

csc /nologo /target:library /out:out/StateMachine.Builders.dll \
    /reference:out/StateMachine.Models.dll \
    StateMachine/Builders/*.cs &&

csc /nologo /target:exe /out:out/state-machine.exe \
    /reference:out/StateMachine.Models.dll \
    /reference:out/StateMachine.Builders.dll \
    StateMachine/Application.cs

我正在使用此脚本,因为我的计算机无法安装/运行MSVS IDE。

1 个答案:

答案 0 :(得分:1)

先使用csc然后再编译ILMerge库来编译您的exe:

ilmerge /target:winexe /out:SelfContainedProgram.exe Program.exe ClassLibrary1.dll classLibrary2.dll

Mono还有其他选择。

注意:不应对库进行签名。