2016-04-26 6 views
0

Ich erstellte a tool mit einem Texteditor und der Mono-Toolchain (auf einem Mac), und jetzt würde ich gerne wissen, wie Sie die resultierende *.exe unter Windows ohne die Mono-Laufzeit ausführen. Ich bin kein .NET-Programmierer, daher bin ich nicht vertraut mit dem, wie man das macht. Ich würde gerne mit einer Art und Weise tippen nur razor-cli.exe arg1 arg2 ... eingeben und es würde einfach funktionieren (irgendwie).Wie stellt man benötigte Baugruppen für eine CLI-App bereit?

Dies ist, wie ich laufen derzeit (sollte auch unter Windows arbeiten):

# Use "set MONO_PATH=...." on Windows 
export MONO_PATH="lib/RazorEngine.3.8.2/lib/net45:lib/Microsoft.AspNet.Razor.3.0.0/lib/net45:lib/Newtonsoft.Json.8.0.3/lib/net45" 
mono razor-cli.exe partial.example.cshtml model.example.json 

Hier füge ich die Pfade für alle Baugruppen MONO_PATH, die von der Mono-Laufzeit verwendet wird. Ich vermute, dass es eine ähnliche Mechanik für .NET gibt, möglicherweise unter Verwendung einer zusätzlichen Datei, die angibt, wo die Laufzeitumgebung die erforderlichen DLLs finden kann.

Antwort

1

Es sollte aus dem Kasten heraus arbeiten: http://www.mono-project.com/docs/faq/technical/#mono-platforms

Die resultierende Befehlszeile sein sollte:

razor-cli.exe partial.example.cshtml model.example.json 

Wie für die erforderlichen Baugruppen, wenn Sie die Standardauflösung Mechanismus nicht außer Kraft setzen, wobei das System sucht im Ordner der Anwendung und/oder im GAC.

Sie könnten auch lesen this resource interessant finden.

Es wird empfohlen, Ihre Anwendung und alle zugehörigen Bibliotheken in den gleichen Ordner zu verschieben und zu beschreiben, wie die Laufzeitumgebung nach den erforderlichen Assemblys sucht.

+0

@JamesThorpe Wie ich die Mono-Website verstehe, müssen Sie nichts Spezifisches tun, nur die exe auszuführen, wie man normalerweise tun würde, sollte ausreichen. Ich kann das aber nicht testen, da ich zu dem Zeitpunkt keine Mono-Runtime zur Verfügung habe. – Sidewinder94

+0

OK, ich habe endlich eine Windows-Box bekommen, und es scheint, als ob alle .NET-Exes (einschließlich der von Mono erzeugten) ohne spezielle Handhabung laufen unter Windows. – oligofren

2

http://www.mono-project.com/archived/best_practices/#monopath

MONO_PATH den Montag Ladevorgang überschreibt und ignoriert Baugruppen, die von den Global Assembly Cache gezogen werden sollte, ist es nur ein Werkzeug Debuggen und Sie sollten seine Verwendung vermeiden.

Also, tu das nicht.

Siehe MSDN: How the Runtime Locates Assemblies, im Grunde: Legen Sie die Assemblys in das Verzeichnis neben Ihrer ausführbaren Datei, oder legen Sie sie in den GAC.

+0

Danke. Auch nützlich: http://www.mono-project.com/docs/getting-started/application-deployment/ – oligofren

+0

Bei der Verwendung von Nuget müsste ich dann die dlls aus den Unterverzeichnissen nach dem Abruf in die appdir verschieben/kopieren, oder? Oder gibt es eine Möglichkeit, die Laufzeit die richtigen DLLs in den Unterverzeichnissen zu verwenden? – oligofren

+0

Was meinst du mit "nach dem Abruf"? Ein Build mit NuGet-Paketen kopiert normalerweise die erforderlichen DLLs in das Ausgabeverzeichnis. – CodeCaster

Verwandte Themen