2016-05-03 18 views
2

Ich habe vor kurzem ein kleines Programm programmiert, um Zahlen in einem Bild zu bestimmen, und es ist abhängig von zwei Bibliotheken, die ich benutzt habe. (DLLs)Erstellen einer "portable" .exe (ohne Installer)

Da mein Zielcomputer aus Sicherheitsgründen keine Programme installieren darf, muss ich eine portable EXE erstellen. .NET ist auf dem Zielcomputer installiert, aber aus irgendeinem Grund enthält VS immer noch nicht die Bibliotheken, die ich in der EXE verwendet habe, sondern stattdessen einen Anwendungsordner mit einer setup.exe, einigen .DEPLOY-Dateien und einem Anwendungsmanifest.

Ich bin neu in VS und .NET im Allgemeinen, so könnte diese Frage leicht zu beantworten sein, aber ich frage, seit ich nichts auf StackOverflow weder auf Google nützlich gefunden habe.

+2

Klingt wie Sie "deploy" statt "build" verwenden. In VS können Sie normalerweise einfach die Ausgabe Ihres Projektverzeichnisses ("bin/debug" oder "bin/release") übernehmen und auf Ihren Zielrechner kopieren. –

+0

Sie können Ihr Projekt erweitern und die EXE-Datei ohne Installation ausführen. Die .exe-Datei finden Sie in .. \ bin \ Debug-Ordner –

+0

Beide obigen Kommentare sind richtig, mit Ausnahme von Win 8, 8.1 und UWP-Anwendungen. Sie erhalten keine EXE-Datei und müssen diese auf den gewünschten PC laden. –

Antwort

4

Eine Möglichkeit besteht darin, Ihre Anwendung im Freigabemodus zu erstellen (Sie können im Drop-down-Menü Debuggen oder Freigeben auswählen). Wechseln Sie dann zu C: \ Projects [ProjectName] [ProjectName] \ bin \ Release (Der Speicherort Ihres Projektordners kann variieren). Sie werden eine Reihe von Dateien sehen, aber alles, was Sie wirklich brauchen, sind die DLLs, die ausführbare Datei und die Konfiguration, wenn Sie eine verwendet haben. Sie müssen keine Einstellungen vornehmen, wenn Sie die notwendigen Dateien im Ordner der Anwendung behalten, sie alle in einen Ordner auf dem Zielcomputer kopieren, eine Verknüpfung erstellen, wenn Sie möchten, und schon können Sie loslegen.

4

Sie können einfach die Anwendung erstellen und kopieren Sie Ihre bin/Debug Ordner zusammen, aber das würde immer noch bedeuten, dass Sie mehrere Dateien benötigen.

Um alle Referenzen in die ausführbare Datei zusammenzuführen, verwenden Sie ILMerge. Hier ist some help calling ILMerge.

Grundsätzlich nach dem Bau, sollten Sie etwas tun:

ilmerge /target:winexe /out:SelfContainedProgram.exe 
    Program.exe ClassLibrary1.dll ClassLibrary2.dll 

Es nur eine Datei, die Sie entlang senden müssen.

+1

Hört sich an, als hätte er Schwierigkeiten, sein Build-Verzeichnis zu lokalisieren und nicht alle Assemblys zusammenzuführen. Diese Antwort wäre ein hilfreicher nächster Schritt, löst aber nicht das aktuelle Problem. Edit: Jup, das ist besser;) –

+0

Danke @ManfreedRadlwimmer –

+1

Ich habe ILMerge vorher versucht, aber es gab einige Exceptions die ich nicht verarbeiten konnte. Danke für die Antwort trotzdem. –

2

Sie können einfach alle Ihre Assemblys in einen beliebigen Ordner kopieren. Wählen Sie einfach "Erstellen" aus Visual Studio und kopieren Sie die Dateien von bin/debug in Ihren Zielordner.

Sie müssen jedoch sicherstellen, dass alle (relativen) Pfade (falls vorhanden) noch funktionieren, da Sie nicht sicher sein können, wohin der Benutzer Ihres Programms die Dateien kopiert.