Microsoft公式コマンドラインツール ILMerge
https://www.microsoft.com/en-us/download/details.aspx?id=17630
1. .NET Frameworkに依存しない exe, dllファイルの1ファイル化の例
1 2 |
> "\Program Files (x86)\Microsoft\ILMerge\ILMerge.exe" ^ /out:MergedMyApp.exe MyApp.exe MyLib0.dll |
1.1. .NET Frameworkに依存しているためエラーが発生した例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
An exception occurred during merging: Unresolved assembly reference not allowed: System.Core. 場所 System.Compiler.Ir2md.GetAssemblyRefIndex(AssemblyNode assembly) 場所 System.Compiler.Ir2md.GetTypeRefIndex(TypeNode type) 場所 System.Compiler.Ir2md.VisitReferencedType(TypeNode type) 場所 System.Compiler.Ir2md.GetMemberRefIndex(Member m) 場所 System.Compiler.Ir2md.GetMethodToken(Method m) 場所 System.Compiler.Ir2md.VisitMethodCall(MethodCall call) 場所 System.Compiler.Ir2md.VisitBranch(Branch branch) 場所 System.Compiler.Ir2md.VisitBlock(Block block) 場所 System.Compiler.Ir2md.VisitBlock(Block block) 場所 System.Compiler.Ir2md.VisitMethodBody(Method method) 場所 System.Compiler.Ir2md.VisitMethod(Method method) 場所 System.Compiler.Ir2md.VisitClass(Class Class) 場所 System.Compiler.Ir2md.VisitModule(Module module) 場所 System.Compiler.Ir2md.SetupMetadataWriter(String debugSymbolsLocation) 場所 System.Compiler.Ir2md.WritePE(Module module, String debugSymbolsLocation, BinaryWriter writer) 場所 System.Compiler.Writer.WritePE(String location, Boolean writeDebugSymbols, Module module, Boolean delaySign, String keyFileName, String keyName) 場所 System.Compiler.Writer.WritePE(CompilerParameters compilerParameters, Module module) 場所 ILMerging.ILMerge.Merge() 場所 ILMerging.ILMerge.Main(String[] args) |
2. .NET Frameworkに依存した exe, dllファイルの1ファイル化の例
.NET Frameworkのパス指定を追加する
2.1. .NET Framework 4.6.1 の場合
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1
1 2 3 |
> "\Program Files (x86)\Microsoft\ILMerge\ILMerge.exe" ^ /targetplatform:"v4,C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1" ^ /out:MergedMyApp.exe MyApp.exe MyLib0.dll |