2016-04-26 113 views
0

我使用文本編輯器和Mono工具鏈(在Mac上)創建了a tool,現在我想知道如何在不使用Mono運行時的情況下在Windows上運行生成的*.exe。我不是一個.NET程序員,所以我不熟悉如何做到這一點。我想最終以某種方式輸入razor-cli.exe arg1 arg2 ...,它只會工作(不知何故)。如何爲CLI應用程序提供所需的程序集?

這是我目前運行它(應該在Windows工作以及):

# 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 

這裏我想補充的路徑爲所有的組件,以MONO_PATH,用於由單聲道運行。我猜測.NET中有一些類似的機制,可能使用額外的文件,指定運行時可以在何處找到所需的dll。

回答

1

它應該工作開箱:http://www.mono-project.com/docs/faq/technical/#mono-platforms

得到的命令行應該是:

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

至於所需的組件,如果你沒有覆蓋默認解決機制,系統將在應用程序的文件夾和/或GAC中查找。

您可能還會發現閱讀this resource有趣。

它建議將您的應用程序及其所有庫存入同一個文件夾,並描述運行庫如何查找所需的程序集。

+0

@JamesThorpe正如我所瞭解的單聲道網站,你不必做任何具體的事情,只要運行exe通常應該是足夠的。我無法測試這一點,因爲我沒有可用的單聲道運行時間 – Sidewinder94

+0

好吧,我最終得到了一個Windows盒子,似乎所有的.NET EXE(包括由MONO生成的)都沒有任何特殊處理在Windows上。 – oligofren

2

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

MONO_PATH覆蓋組件加載過程,而忽略應該從全局程序集緩存中取出組件,它僅僅是一個調試工具,你應該避免使用它。

所以,不要這樣做。

請參閱MSDN: How the Runtime Locates Assemblies,基本上:將程序集放在可執行文件旁邊的目錄中,或將它們放在GAC中。

+0

謝謝。同樣有用:http://www.mono-project.com/docs/getting-started/application-deployment/ – oligofren

+0

當使用Nuget時,我需要在檢索後將子目錄中的dll移到/複製到appdir,對吧?或者有沒有辦法讓運行時在子目錄中使用正確的dll? – oligofren

+0

你是什麼意思「檢索後」?使用NuGet包構建通常會將必需的DLL複製到輸出目錄。 – CodeCaster

相關問題