如何为CLI应用程序提供所需的程序集?

时间:2016-04-26 11:02:15

标签: c# .net mono

我使用文本编辑器和Mono工具链(在Mac上)创建了a tool,现在我想知道如何在不使用Mono运行时的情况下在Windows上运行生成的*.exe。我不是.NET程序员,所以我不熟悉如何做到这一点。我想以某种方式只输入razor-cli.exe arg1 arg2 ...,它就会起作用(不知何故)。

这就是我目前的运行方式(也适用于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,由Mono运行时使用。我猜测.NET有一些类似的机制,可能使用一个额外的文件,指定运行时可以在哪里找到所需的dll。

2 个答案:

答案 0 :(得分:2)

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

  

MONO_PATH会覆盖程序集加载过程,并会忽略应从全局程序集缓存中提取的程序集,它只是一个调试工具,你应该避免使用它。

所以,不要这样做。

请参阅MSDN: How the Runtime Locates Assemblies,基本上:将程序集放在可执行文件旁边的目录中,或将它们放在GAC中。

答案 1 :(得分:1)

它应该开箱即用:http://www.mono-project.com/docs/faq/technical/#mono-platforms

生成的命令行应为:

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

对于所需的程序集,如果您没有覆盖默认的解析机制,系统将查看应用程序的文件夹和/或GAC。

您可能还会发现阅读this resource很有趣。

它建议将您的应用程序及其所有库发送到同一文件夹,并描述运行时将如何查找所需的程序集。