<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Linux 下的 C# 开发]]></title><description><![CDATA[<h3>Linux 下的C#开发</h3>
<p dir="auto">在2014年微软开源了<a href="https://github.com/dotnet/corefx" target="_blank" rel="noopener noreferrer">C#</a>, C#也被官方移植到了Linux平台。Microsoft 开始真正的 Love Linux 了。但是实际上早在官方移植之前，就已经有人实现了在Linux下的C#开发。而且由于已经有了很长世间的积淀，稳定性和软件库的完备性方面也要比官方的要好。这个项目就是<a href="http://www.mono-project.com/" target="_blank" rel="noopener noreferrer">Mono</a>。这篇文章就是介绍Mono在Ubuntu下的具体安装和使用。</p>
<h4>Mono 的安装</h4>
<p dir="auto">以下的例子都是以Ubuntu 14.04 为例， 你可能需要根据自己的系统进行调整。<br />
进入 Mono 官方的<a href="http://www.mono-project.com/docs/getting-started/install/linux/" target="_blank" rel="noopener noreferrer">安装介绍页面</a><br />
按照网页中的指示，在终端中输入以下内容</p>
<pre><code>sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
</code></pre>
<p dir="auto">等待更新完成后输入</p>
<pre><code>sudo apt-get install mono-complete
</code></pre>
<p dir="auto">这样Mono环境就安装完成了， 如果你只需要一个C#的编译和运行环境，那么到这里就足够了。<br />
安装IDE<br />
mono提供了一个非常好的IDE开发环境。</p>
<pre><code>sudo apt-get install monodevelop
</code></pre>
<h4>IDE的使用</h4>
<p dir="auto">当IDE安装完成之后再Ubuntu的Dash里面就可以打开IDE了，如下图所示。<br />
<img src="/uploads/files/1466409771374-screenshot-from-2016-06-20-16-3a01-3a56.png" alt="从Dash打开MonoDevelop" class=" img-responsive img-markdown" /></p>
<p dir="auto">打开IDE后界面如下，使用方法基本和Visual Studio 是一样的。<br />
<img src="/uploads/files/1466408382119-monodevelop.png" alt="alt text" class=" img-responsive img-markdown" /><br />
需要注意的是Windows下的dll和Linux下的dll是不通用的，如果直接在Linux下打开Windows的项目需要重新添加dll的依赖。甚至有时还要重新创建项目才能使用。不过用Mono Develop创建的项目Visual Studio 是可以正常打开的。</p>
<p dir="auto">下面以一个HelloWorld例子来展示基本的使用方法， 在File-&gt; New Solution 里面创建新的Console Application。如下图所示</p>
<p dir="auto"><img src="/uploads/files/1466409884678-screenshot-from-2016-06-20-15-3a57-3a17.png" alt="0_1466409873661_Screenshot from 2016-06-20 15%3A57%3A17.png" class=" img-responsive img-markdown" /></p>
<p dir="auto">如果想要添加dll依赖可以右键点击Refererces， 然后点击edit<br />
<img src="/uploads/files/1466410035812-screenshot-from-2016-06-20-15-3a58-3a34.png" alt="0_1466410032847_Screenshot from 2016-06-20 15%3A58%3A34.png" class=" img-responsive img-markdown" /></p>
<p dir="auto">在弹出的对话框里面选择对应的dll</p>
<p dir="auto">如果想要添加NuGet软件包可以右键点击Packages， 然后选择Add</p>
<p dir="auto"><img src="/uploads/files/1466410121744-screenshot-from-2016-06-20-15-3a58-3a22.png" alt="0_1466410114167_Screenshot from 2016-06-20 15%3A58%3A22.png" class=" img-responsive img-markdown" /></p>
<p dir="auto">在弹出的对话框中选择你需要的软件包。</p>
<p dir="auto">项目编辑完成之后按F5就可以直接执行了<br />
<img src="/uploads/files/1466410214621-screenshot-from-2016-06-20-15-3a59-3a01.png" alt="0_1466410209534_Screenshot from 2016-06-20 15%3A59%3A01.png" class=" img-responsive img-markdown" /></p>
<h4>项目的编译</h4>
<p dir="auto">在安装了Mono Develop的情况下，可以直接利用IDE进行编译。但是如果没有装IDE那么就需要以下的指令进行编译。</p>
<p dir="auto">首先需要用NuGet自动安装项目的依赖软件包。在项目的根目录下执行以下指令。在执行前确认你已经下载了NuGet.exe文件。如果没有下载可以在<a href="https://nuget.codeplex.com/downloads/get/1441482" target="_blank" rel="noopener noreferrer">这里</a>下载。如果执行过程中出现证书错误等等，这是由于mono的版本比较低的原因。按照以上方法安装的话应该是没有这个问题的。</p>
<pre><code>mono Nuget.exe restore
</code></pre>
<p dir="auto">然后执行以下指令进行编译</p>
<p dir="auto">xbuild /p:Configuration=“Debug POSIX”</p>
<p dir="auto">其中Debug POSIX是 编译的设置。如果想要编译Release版本的就可以写</p>
<pre><code>xbuild /p:Configuration="Release"
</code></pre>
<h4>运行效率</h4>
<p dir="auto">我没有做过具体的Benchmark，但就自己的使用而言我觉得Linux下的C#并没有明显的效率下降，CPU和内存的使用率也并不高（相同程序的比较）。个人也非常推荐用C#进行跨平台开发。</p>
]]></description><link>http://community.bwbot.org/topic/33/linux-下的-c-开发</link><generator>RSS for Node</generator><lastBuildDate>Tue, 21 Jul 2026 04:57:31 GMT</lastBuildDate><atom:link href="http://community.bwbot.org/topic/33.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 20 Jun 2016 08:16:36 GMT</pubDate><ttl>60</ttl></channel></rss>