如何从 VS2015 定位 Mono 框架?

How to target Mono framework from VS2015?

我想在安装了单声道的 Linux 上部署 ASP.NET 网络应用程序。

据我所知,Mono 是一个类似于 .DNX 4.5.1 或 .DNX Core 5.0 的目标平台。所以我需要以某种方式将它添加到我项目中的目标平台,以针对它编译和调试项目。

令人惊讶的是,我没有找到任何说明。我正在创建一个新的 ASP.NET 5/vNext 项目,我看到的只是 4.5.1 和 Core 5.0 编译目标。如何将 Mono 添加到该列表?

有一些用于 VS 的 Mono product/Mono 将 Mono 集成到 VS 中,但现在有 none。

在这种情况下,您应该以 .NET Core 5 为目标,因为它将成为最终的解决方案。

Mono 确实仍然为 ASP.NET 4.* 项目提供一些支持,但是很难断言兼容性,因为您需要在 Linux 上部署到 Mono 进行验证。即使在这些情况下,您的项目也应该像您过去所做的那样以完整的 .NET Framework 为目标。没有要定位的 Mono 特定配置文件。

从 Visual Studio 编译并定位 Mono

摘自here

您可以在 Windows 上针对 Mono 进行编译,从 Visual studio 使用 MonoHelper 插件(在下面使用 xbuild)。

还有另一种解决方案,它针对来自 visual studio 的 "Mono" .NET Framework 配置文件。 以下步骤来自 here,适用于 VS 2012(但它应该适用于其他版本)。

  1. 创建两个注册表项:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0,Profile=Mono

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0,Profile=Mono

  2. 在 Microsoft References Assemblies 目录中创建一个 link 到 Mono 目录 (您可能需要运行以下管理员权限)

    cd "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Profile" mklink /d Mono "C:\Program Files (x86)\Mono\lib\mono.5" cd Mono mkdir RedistList cd RedistList notepad FrameworkList.xml

  3. 编辑FrameworkList.xml

将以下内容粘贴到 FrameworkList.xml

<?xml version="1.0" encoding="utf-8"?>
<FileList  Redist="Mono-4.5" Name="Mono 4.5 Profile" RuntimeVersion="4.5" ToolsVersion="4.0" > </FileList>