Matsosks 上的单声道 - w=10=sh vch.5

Mono on MacOSX - "The runtime version supported by this application is unavailable." v4.5

我刚刚在 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/ 下载。

我有一个 webapi 应用程序,我想 运行 和 xsp4.exe。我使用这个命令行:

/usr/bin/mono --runtime=v4.5 /Library/Frameworks/Mono.framework/Versions/4.0.4/lib/mono/4.5/xsp4.exe

我得到这个输出:

WARNING: The runtime version supported by this application is unavailable.
Using default runtime: v4.0.30319
...

为什么我会收到这条消息?为什么说 "the runtime version is unavailable"?

我相信我已经安装了 v4.5,以及 mono v4.0.4。在目录 /Library/Frameworks/Mono.framework/Versions/4.0.4/lib/mono 中,我可以看到

这是否表示 运行时间的 v4.5 可用?

在 4.5 目录中,我看到很多 DLL,它们都符号链接到一个 gac 目录。这些符号链接的目标存在。

我不知道如何分辨单声道,是的,v4.5 确实存在。使用它。

我有一个单独的、可能相关的问题。 收到上述警告后,xsp4 运行s。当我尝试在浏览器中加载 ASPX 应用程序时,出现可怕的 CS0234 错误,

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?

但是在 /Library/Frameworks/Mono.framework/Versions/4.0.4/lib/mono/4.5 中,我可以看到

System.Web.Http.dll -> ../gac/System.Web.Http/4.0.0.0__31bf3856ad364e35/System.Web.Http.dll

并且该 DLL 确实存在于 gac 目录中。我认为 xsp4/mono 找不到作为 v4.5 一部分的 System.Web.Http.dll。我对吗?

我做错了一些基本错误。有人可以引导我吗?

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 脚本 tools/utilities,因此您不必手动输入路径:

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" "$@"