我刚在MACOSX 10.10.5 Yosemite上安装了Mono v4.0.4。
安装程序包是:MonoFramework-MDK-4.0.4.4.macos10.xamarin.x86.pkg
昨晚从http://www.mono-project.com/download/下载的。/usr/bin/mono --runtime=v4.5 /Library/Frameworks/Mono.framework/Versions/4.0.4/lib/mono/4.5/xsp4.exe
。
我有一个webapi应用程序,我想用xsp4.exe运行。我使用这个命令行:
WARNING: The runtime version supported by this application is unavailable.
Using default runtime: v4.0.30319
...
我得到了这个输出:
/Library/Frameworks/Mono.framework/Versions/4.0.4/lib/mono
为什么我会收到此消息?为什么会说,"运行时版本不可用"?
我相信我安装了v4.5,单声道v4.0.4。在目录System.Web.Compilation.CompilationException
CS0234: The type or namespace name `Http' does not exist in the namespace `System.Web'. Are you missing an assembly reference?
中,我可以看到
这是否表示运行时的v4.5可用?
在4.5目录中,我看到很多DLL,都符号链接到gac目录。这些符号链接的目标存在。
我无法弄清楚如何辨别单声道, YEAH,v4.5 DOES EXIST。使用它。
我有一个单独的,可能相关的问题。 获得上述警告后,xsp4运行。当我尝试在浏览器中加载ASPX应用程序时,我遇到了可怕的CS0234错误,
System.Web.Http.dll -> ../gac/System.Web.Http/4.0.0.0__31bf3856ad364e35/System.Web.Http.dll
但在/Library/Frameworks/Mono.framework/Versions/4.0.4/lib/mono/4.5中,我可以看到
SELECT
ps_orders.id_customer,
ps_customer.firstname,
ps_customer.lastname,
ps_customer.email,
ps_orders.total_paid
FROM
ps_orders
RIGHT JOIN ps_customer
on ps_orders.id_customer = ps_customer.id_customer
WHERE
ps_orders.total_paid > 1
GROUP BY
ps_orders.id_customer;
该DLL确实存在于gac目录中。我认为xsp4 / mono无法找到System.Web.Http.dll,它是v4.5的一部分。我对吗?
我做了一些基本错误的事情。有人能引导我吗?
答案 0 :(得分:3)
mono --runtime=
该选项用于控制 CLR 运行时:
CLR version .NET version
1.0 1.0
1.1 1.1
2.0 2.0, 3.0, 3.5
4 4, 4.5, 4.6
如果你贬低xsp4.exe,你会发现它需要一个可以提供CLR 4.0运行时的主机:
ikdasm xsp4.exe | head -n 2
// Metadata version: v4.0.30319
或通过xCorFlags:
>>corflags xsp4.exe
Mono/.NET Framework CorFlags Conversion Tool. Version 1.0.5643.36015
Copyright (c) SushiHangover. All rights reserved.
Version : v4.0.30319
CLR Header: 2.5
PE : PE32
CorFlags : 0x9
ILONLY : 1
32BITREQ : 0
32BITPREF : 0
Signed : 1
Mono将通过探测正在加载的CIL来自动检测所需的运行时,因此除非您确实需要强制使用不同的运行时版本,否则无需指定它。
仅供参考:Mono为xsp4(及其他)的工具/实用程序安装shell脚本,因此您不必手动输入路径:
cat `which xsp4`
#!/bin/sh
exec /Library/Frameworks/Mono.framework/Versions/4.2.1/bin/mono $MONO_OPTIONS "/Library/Frameworks/Mono.framework/Versions/4.2.1/lib/mono/4.5/xsp4.exe" "$@"