如何用Mono编译Visual Studio c#项目

本文关键字:Studio 项目 Visual 编译 何用 Mono | 更新日期: 2023-09-27 18:15:46

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

我想在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;

我不知道我是否需要注意对编译器的引用,或者它是否会自己拉它们,它是否会知道在哪里寻找它们。我以前从没做过这个。但是我只需要编译这个项目。

谢谢!

如何用Mono编译Visual Studio c#项目

你试过xbuild吗?它相当于Mono世界中的MSBuild。如果MSBuild能够在Windows上编译你的项目,xbuild应该能够在Linux上做同样的事情(如果它不能,在Bugzilla中提交一个错误)。

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

正确,安装mono-complete

apt-get install mono-complete

我不知道为什么,但我有错误编译只有mono-xbuild安装,

并从命令行运行:

xbuild yourvisualcsharpproject.csproj

Mono和。net Framework在可用的特性方面是不等同的。

例如,Mono提供了跨平台的功能,但没有实现。net框架提供的一些与windows相关的特性。所以你不能在windows上用。net编译,并期望它在Unix/Mono上顺利运行:它可能会起作用,但失败的可能性很大。事实上,程序越复杂,概率就越高(你使用了Mono中没有的东西)。

使用命令行工具编译:Xbuild

如果你想编译一个。sln/。从命令行对mono的csproj,然后xbuild (MSBuild的mono克隆)是一种方式:

xbuild mysolution.sln
xbuild myproject.csproj

Ubuntu xbuild的手册页。

xbuild.exe位于mono安装中,最有可能在:

C:'Program Files (x86)'Mono'lib'mono'4.5

从IDE (VS)编译

你可以在Windows上编译Mono,从Visual studio使用MonoHelper插件(在下面使用xbuild)。

还有另一个解决方案,它针对的是visual studio中的"Mono". net框架配置文件。下面的步骤从这里开始。

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

同样的配置文件技巧也被用于Unity。

  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目录中的Mono目录(您可能需要以管理员权限运行以下命令)

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

  3. Edit 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>
  • 在Visual Studio
  • 中更改项目应用程序选项卡中的框架目标

    编译MonoDevelop/Xamarin Studio

    MonoDevelop可以在Unix和Windows上运行,你可以很容易地在IDE中从。net编译/调试/运行切换到Mono编译/调试/运行。然而,尽管MonoDevelop对于c#季节性开发人员来说相当高效,但它还没有达到Visual Studio与Resharper相结合的强大功能。

    您可以在visual studio中构建并部署到Linux上,并在mono下运行。看一下这篇文章

    Visual Studio Code and Mono/.NetCore

    如果你正在Linux上运行/编译/调试c#,你现在可以使用

    • Visual Studio Code
    • Mono调试
    • c# on VS Code

    如果你想在Linux和windows上使用完全相同的API,您可以使用。网络核心

    在命令行中,编译:

    dotnet build <solution/project> 
    

    或者如果文件夹

    中只有一个项目
    dotnet build
    

    dotnet run