2016-06-05 35 views
0

Ich versuche, eine einzelne Datei ausführbare Datei erstellen. Der Code ist .NET-basiert und stützt sich auch auf einige zusätzliche Bibliotheken einschließlich SQLite.Kann ILMerge nicht zum Erstellen von Single-Datei-Konsole-Anwendung, die funktioniert

Wenn ich den Quellcode kompiliere, gehen alle relevanten Dateien in das Release-Verzeichnis, obwohl die SQLite DLL (sqlite3.dll) in ein Unterverzeichnis (x86) geht. Ich denke, das passiert, weil ich SQLite-Raw verwende und das sowohl x86- als auch x64-Kopien der DLL "ausspuckt".

Meine Anfangsbefehlszeile, um zu versuchen ist:

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 

Dies erzeugt die folgende Ausgabe, die mir Sorgen macht:

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. Soll ich über die ungelösten Referenzen betroffen sein? Der Grund warum ich frage ist, dass die fertige ausführbare Datei nicht funktioniert. Es bricht mit einem Null-Referenz Ausnahme (Objektverweis nicht auf eine Instanz eines Objekts festgelegt) auf dieser Linie:

file = await StorageFile.GetFileFromPathAsync(filename);

Die un-fusionierten Version der ausführbaren Datei funktioniert :(Es ist nicht "Dateiname" ist defekt, da ich versucht habe, einige zusätzliche Tests hinzuzufügen und es ist in Ordnung.

  1. Versuchen Sie, wie ich die sqlite3.dll zu der Liste der Dinge hinzufügen könnte Wenn ich versuche, beschwert sich ILMerge nur mit einem Fehler "Konnte Assembly nicht geladen werden."

Antwort

1

Da SQLite keine .NET-Bibliothek ist, enthält es keine IL zum Zusammenführen

+0

Danke - das macht Sinn :) Gibt es etwas, was ich tun kann, um eine einzelne ausführbare Datei zu erstellen, die auch den Code aus der SQLite enthält dLL? –