依存関係を指定する nuspec を使用してカスタム パッケージを作成しています。また、複数の dll を 1 つの dll にマージしています。
マージされた dll に外部 dll が含まれないように、外部 dll を参照する必要があります。
次のコマンドを実行しました。
ILMerge.exe /out:C:\Temp\lib\netstandard2.0\ProjectA.dll "ProjectC.dll" "ProjectD.dll"
ProjectC.dll は ProjectZ.dll という外部パッケージに依存しています。ProjectZ.dll を外部依存関係として追加し、ProjectA.dll には含めないようにする必要があります。
引数に ProjectZ.dll を指定せずにコマンドを実行すると、次のエラーが表示されます。
An exception occurred during merging:
Unresolved assembly reference not allowed: ProjectZ.
at System.Compiler.Ir2md.GetAssemblyRefIndex(AssemblyNode assembly)
at System.Compiler.Ir2md.GetTypeRefIndex(TypeNode type)
at System.Compiler.Ir2md.GetTypeDefOrRefOrSpecEncoded(TypeNode type)
at System.Compiler.Ir2md.VisitInterface(Interface Interface)
at System.Compiler.Ir2md.Visit(Node node)
at System.Compiler.Ir2md.VisitModule(Module module)
at System.Compiler.Ir2md.SetupMetadataWriter(String debugSymbolsLocation)
at System.Compiler.Ir2md.WritePE(Module module, String debugSymbolsLocation, BinaryWriter writer)
at System.Compiler.Writer.WritePE(String location, Boolean writeDebugSymbols, Module module, Boolean delaySign, String keyFileName, String keyName)
at System.Compiler.Writer.WritePE(CompilerParameters compilerParameters, Module module)
at System.Compiler.Module.WriteModule(String location, CompilerParameters options)
at ILMerging.ILMerge.Merge()
at ILMerging.ILMerge.Main(String[] args)
例 Moq.dll には、Castle.Core の参照アセンブリがあります。