如何使用Mono编译Visual Studio C#项目

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Mono编译Visual Studio C#项目相关的知识,希望对你有一定的参考价值。

我是新手,不知道从哪里开始。

我想在Linux上使用Mono编译Visual Studio C#项目(通过命令行)。

main.cs文件包含以下引用:

using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
using iTextSharp.text;
using iTextSharp.text.pdf;

我不知道是否需要记下对编译器的引用,或者它是否会将它们自身拉出来,无论它是否知道在哪里查找它们。我以前从未这样做过。但我只需要编译这个项目。

谢谢!

答案

你试过xbuild吗?它是Mono世界中的MSBuild等价物。如果MSBuild能够在Windows中编译您的项目,xbuild应该能够在Linux上执行相同的操作(如果没有,请在Bugzilla中提交错误)。

更新:如今,Mono开发人员/打包者正在捆绑原始(和最近开源的)MSBuild,现在是跨平台。例如,它已经在Mac的最新Mono安装程序中可用,因此您可以使用命令行程序msbuild来构建您的项目/解决方案(注意:Linux发行版捆绑还有很长的路要走,因为msbuild依赖于nuget包,又名二进制blob)。

另一答案

knocte是对的,安装mono-complete

apt-get install mono-complete

我不知道为什么但是我在安装mono-xbuild时遇到了错误,

并从命令行运行:

xbuild yourvisualcsharpproject.csproj
另一答案

你可以在Visual Studio中构建并在Linux上部署并在mono下运行。看看这个article

另一答案

Mono and .NET Framework are not equivalent in terms of features available.

例如,Mono提供跨平台功能,但不实现.NET Framework提供的某些Windows链接功能。因此,您无法在Windows上使用.NET进行编译,并期望它在Unix / Mono上顺利运行:它可能有效,但很有可能会失败。事实上,程序越复杂,机会就越高(你使用Mono中没有的东西)。

使用命令行工具进行编译:Xbuild

如果你想从命令行编译.sln / .csproj对单声道,那么xbuild(MSBuild的单声道克隆)是要走的路:

xbuild mysolution.sln
xbuild myproject.csproj

The man page of xbuild on Ubuntu

xbuild.exe位于单声道安装中,最有可能出现在:

C:Program Files (x86)Monolibmono4.5

从IDE编译(VS)

您可以在Windows上使用MonoHelper插件(使用下面的xbuild)从Visual Studio编译Mono。

还有另一种解决方案,它针对视觉工作室的“Mono”.NET Framework配置文件。以下步骤来自here

注意:我尝试在4.5中更改配置文件的位置(但这不起作用;要么vs没有找到它,要么检测到它没有安装)所以总是使用v4.0目录来安装配置文件基于v4.0 VM。这个限制以及“Profile”事件已经停止的事实使我认为它不适用于更高版本的Tools。

顺便说一句,Unity使用相同的配置文件技巧。

  1. 创建两个注册表项: HKEY_LOCAL_MACHINESOFTWAREMicrosoft.NETFrameworkv4.0.30319SKUs.NETFramework,Version=v4.0,Profile=Mono HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoft.NETFrameworkv4.0.30319SKUs.NETFramework,Version=v4.0,Profile=Mono
  2. 链接到Microsoft References Assemblies目录中的Mono目录(您可能需要以管理员权限运行以下内容) cd "C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.0Profile" mklink /d Mono "C:Program Files (x86)Monolibmono4.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>
  1. 在Visual Studio中的项目应用程序选项卡中更改框架目标

使用MonoDevelop / Xamarin Studio进行编译

MonoDevelop在Unix和Windows上运行,您可以在IDE中轻松地从.Net编译/调试/运行切换到Mono编译/调试/运行。然而,虽然MonoDevelop对于C#季节性开发人员而言非常有效,但它尚未达到Visual Studio与Resharper相结合的强大功能。

另一答案

Visual Studio Code and Mono / .NetCore

如果您在Linux上运行/编译/调试C#,您现在可以使用

如果你想在linux和windows上使用完全相同的api,你可以使用.Net Core

在命令行上,编译:

dotnet build <solution/project> 

或者如果文件夹中只有一个项目

dotnet build

然后

dotnet run

以上是关于如何使用Mono编译Visual Studio C#项目的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio和Unity Mono注册了clobbering

将 Visual Studio 2012 配置为使用 Mono 的 C# 编译器,而不是默认的 csc.exe

在 Linux 中的 Mono 下,在 Visual Studio / msbuild 中编译的二进制文件是不是 100% 兼容?

如何使用Visual Studio 2017构建Gtk#/ Mono应用程序

如何使用 Visual Studio 2017 Linux 支持编译和构建 C++17 代码?

visual studio code如何运行c