介绍
在本文中,您将学习如何通过Mono运行ASP.NET Core 2.0项目。
大多数情况下,我们使用.NET Core CLI来运行我们的ASP.NET Core Web应用程序,例如dotnet run和dotnet xxx.dll。
但是,Mono也可以运行ASP.NET Core Web应用程序!我会告诉你如何一步一步。
让我们开始!
步骤1
创建一个名为MonoDemo的新的ASP.NET Core Web应用程序。
第2步
将默认目标从.NET Core更改为.NET Framework。
注意
如果您觉得为什么我们可以在这里选择.NET Framework,您需要学习一些更多的概念,比如.NET Core,ASP.NET Core和.NET Framework等。
第3步
为了使这个应用程序能够在OSX anLinux上运行,我们需要编辑MonoDemo.csproj。
这是编辑后的MonoDemo.csproj。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net461</TargetFramework>
<RuntimeIdentifiers>osx-x64;linux-x64</RuntimeIdentifiers>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="2.0.0" PrivateAssets="All" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.0" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.0" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
</ItemGroup>
</Project>
步骤4
使用.NET Core CLI命令发布此Web应用程序。如果您的目标是OSX,则可以使用以下命令。
dotnet publish -r osx-x64 -c Release -f net461
如果您的目标是Linux,则可以使用以下命令。
dotnet publish -r linux-x64 -c Release -f net461
在这里,我使用OSX作为例子。而且,它和Linux一样。它们之间的唯一区别是libuv文件。每个操作系统都有自己的类型。
第5步
复制MAC或Linux计算机上Publish文件夹中的所有文件。在执行以下步骤之前,您需要先安装Mono。如果您尚未安装,请按照以下链接进行安装。
http://www.mono-project.com/download/
第6步
让我们通过mono来运行它。
mono MonoDemo.exe
不幸的是,我们运行上面的命令后,发现终端出现了一些错误。我们需要从发布文件夹中删除一个名为
System.Runtime.InteropServices.RuntimeInformation.dll的DLL 。
去除后,运行良好。
第七步
打开浏览器并输入监听URL http:// localhost:5000。你会发现一切都很好。
我们可以使用lsof命令来找出谁正在监听5000端口。
lsof -i:5000
为了比较,我通过.NET Core CLI运行了一个新的ASP.NET Core Web应用程序。
最后,转向Linux并运行这个应用程序。在这里,我使用CentOS。
正如你所看到的,OSX和Linux都是一样的,而且很容易通过Mono来运行。
如果您想在Linux中以这种方式托管您的Web应用程序,请按照官方文档使用Nginx在Linux上设置ASP.NET Core的托管环境,然后部署到它并在您的服务文件中编辑ExecStart 。
以下是我们的应用程序的示例服务文件:
概要
本文介绍了另一种通过Mono运行ASP.NET Core Web应用程序的方法。我希望这能帮到您。