Я пытаюсь создать однофайльный исполняемый файл. Код является .Net-based, а также опирается на некоторые дополнительные библиотеки, включая SQLite.Не удается заставить ILMerge создавать однопользовательское консольное приложение, которое работает
Когда я компилирую исходный код, все соответствующие файлы переходят в каталог Release, хотя SQLite DLL (sqlite3.dll) входит в подкаталог (x86). Я думаю, это происходит из-за того, что я использую SQLite-raw и что «выплевывает» как x86, так и 64-разрядные копии DLL.
Моя первая командная строка, чтобы попытаться это:
ILMerge /out:GEDtoRH.all.exe GEDtoRH.exe *.dll /target:exe /targetplatform:"v4,C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2" /wildcards /log
Это производит следующий вывод, что меня беспокоит:
AssemblyResolver: Assembly 'System.Runtime.WindowsRuntime' is referencing assembly 'System.Runtime'.
...
AssemblyResolver: Did not find assembly in framework directory.
AssemblyResolver: Unable to resolve reference. (It still might be found, e.g., in the GAC.)
AssemblyResolver: Assembly 'System.Runtime.WindowsRuntime' is referencing assembly 'System.Threading.Tasks'.
...
AssemblyResolver: Did not find assembly in framework directory.
AssemblyResolver: Unable to resolve reference. (It still might be found, e.g., in the GAC.)
AssemblyResolver: Assembly 'System.Runtime.WindowsRuntime' is referencing assembly 'System.IO'.
...
AssemblyResolver: Did not find assembly in framework directory.
AssemblyResolver: Unable to resolve reference. (It still might be found, e.g., in the GAC.)
Location for referenced module 'sqlite3' is ''
- Я должен быть обеспокоен неразрешенные ссылки? Причина, по которой я спрашиваю, состоит в том, что готовый исполняемый файл не работает. Он порывает с нулевым опорным исключением (ссылка на объект не указывает на экземпляр объекта) на этой линии:
file = await StorageFile.GetFileFromPathAsync(filename);
ООН-объединенная версия исполняемого файла прекрасно работает :(Это не «filename», которое сломано, поскольку я попытался добавить дополнительные тесты, и это нормально.
- Попробуйте как можно добавить sqlite3.dll к списку вещей, чтобы глотать , если я попытаюсь, ILMerge просто жалуется на ошибку «Не удалось загрузить сборку».
Спасибо - это имеет смысл :) Есть ли что-нибудь, что я могу сделать для создания одного исполняемого файла, который также содержит код из SQLite Dll? –