如何用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;
我不知道我是否需要注意对编译器的引用,或者它是否会自己拉它们,它是否会知道在哪里寻找它们。我以前从没做过这个。但是我只需要编译这个项目。
谢谢!
你试过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。 创建两个注册表键: 创建一个链接到Microsoft References Assemblies目录中的Mono目录(您可能需要以管理员权限运行以下命令) Edit 粘贴以下内容到 编译MonoDevelop/Xamarin Studio MonoDevelop可以在Unix和Windows上运行,你可以很容易地在IDE中从。net编译/调试/运行切换到Mono编译/调试/运行。然而,尽管MonoDevelop对于c#季节性开发人员来说相当高效,但它还没有达到Visual Studio与Resharper相结合的强大功能。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
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
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中构建并部署到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