Вы должны войти, чтобы создавать сообщения и темы.

Ошибка при "Склеивании" dll с помощью ilmerge

Всем привет, такая проблема, использую ilmerge для склеивания dll файлов, но после обновления windows до 11, происходит исключение

An exception occurred during merging:
Unresolved assembly reference not allowed: WindowsBase.
   в System.Compiler.Ir2md.GetAssemblyRefIndex(AssemblyNode assembly)
   в System.Compiler.Ir2md.GetTypeRefIndex(TypeNode type)
   в System.Compiler.Ir2md.VisitReferencedType(TypeNode type)
   в System.Compiler.Ir2md.VisitField(Field field)
   в System.Compiler.Ir2md.Visit(Node node)
   в System.Compiler.Ir2md.VisitClass(Class Class)
   в System.Compiler.Ir2md.Visit(Node node)
   в 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)
   в System.Compiler.Module.WriteModule(String location, CompilerParameters options)
   в ILMerging.ILMerge.Merge()
   в ILMerging.ILMerge.Main(String[] args)

пробовал вручную указывать версию .net с помощью targetplatform, но после этого появилось новое исключение "Не удалось привести тип объекта "System.Compiler.Class" к типу "System.Compiler.DelegateNode""

установленные версии .NETFramework c 4.0 до 4.8

 

Привет, @katrg
Если можешь, скинь нужные для склейки файлы, попробую у себя на 10 склеить своей графической надстройкой над ILMerge

Прошу прощения за задержу, я проверил с помощью виртуальной машины, та же самая ошибка. Ничего не понимаю

Нашёл корень проблемы. Из-за одного dll не хотел склеивать, но раньше всё работало

Приветствую.
А вы уверены, что та .dll тоже на С# написана? Именно ее раньше "склеивали"?

Я использую Windows API Code Pack Shell для выбора папок. И честно говоря не уверен что он полностью написан на C#

ilmerge и другие "склеиватели" умеют склеивать только библиотеки, скомпилированные под .Net (С#, F#, VB.Net), т.к. они работают на уровне промежуточного IL кода. Если библиотека не .Net она не может быть "склеена". 

P.S. Если речь о Microsoft-WindowsAPICodePack-Shell, то она на C#, НО не все библиотеки могут быть "склеены" (не знаю точно с чем связано, но с таким сталкивался).
Еще, вместо ILMerge, можете попробовать ILRepack. Это хоть и древняя программа, но вполне рабочая.
Или, попробуйте еще подключить Costura.Fody. Это автоматический "склеиватель" (достаточно просто установить через Nuget), но он заметно увеличивает размер конечного файла.

Благодарю за ответ, попробую