2016-06-05 6 views
0

Я пытаюсь создать однофайльный исполняемый файл. Код является .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 '' 
  1. Я должен быть обеспокоен неразрешенные ссылки? Причина, по которой я спрашиваю, состоит в том, что готовый исполняемый файл не работает. Он порывает с нулевым опорным исключением (ссылка на объект не указывает на экземпляр объекта) на этой линии:

file = await StorageFile.GetFileFromPathAsync(filename);

ООН-объединенная версия исполняемого файла прекрасно работает :(Это не «filename», которое сломано, поскольку я попытался добавить дополнительные тесты, и это нормально.

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

ответ

1

Поскольку SQLite не является библиотекой .NET, он не содержит никакого IL-соединения, которое должно быть объединено

+0

Спасибо - это имеет смысл :) Есть ли что-нибудь, что я могу сделать для создания одного исполняемого файла, который также содержит код из SQLite Dll? –

Смежные вопросы