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;

私はコンパイラへの参照に注意する必要があるかどうか、またはコンパイラへの参照をどこで探すべきかを知るかどうかにかかわらず、それ自体を引き出すかどうかはわかりません。私は以前これをやったことがない。しかし、私はこのプロジェクトをコンパイルする必要があります。

ありがとうございました!

40
一つの方法を見つけることができます:コードをMonoプロジェクトに貼り付け、コンパイルしようとします。コンパイラは、参照が機能するかどうかを判断するよりも速く不平を言うでしょう。 Monoはかなり包括的な.NETライブラリのカバレッジを持っているので、すぐに使えるかもしれません。
追加された 著者 Robert Harvey,
真剣に、私はどこから始めるべきかを知りません。私は何も知らない、私はMonoDevelopが何であるか分からない。また、私はLinuxのコマンドラインでコンパイルしようとしています。 WindowsでコンパイルされたMonoアプリケーションは、Linuxで動作しますか? Linux用のLinuxでのみコンパイルしなければならないと仮定しました。
追加された 著者 Alasdair,
そうですね、MonoDevelopはMonoの開発部分です。私はこれをWindowsにインストールし、それをコンパイルしようとします。実行可能ファイルがLinux上で動作するかどうかを確認します。
追加された 著者 Alasdair,
iTextSharpライブラリが見つかりません...プロジェクトディレクトリにitextsharp.dllがあります。どのように私はそれを指すことができますか?
追加された 著者 Alasdair,
私がLinuxでやった方法
追加された 著者 Icarus,
MonoDevelopでVisual Studioソリューションを開こうとしましたか?
追加された 著者 dtb,
xbuildはあなたの仲間です
追加された 著者 IanNorton,

5 答え

xbuild を試しましたか?これは、Monoの世界でMSBuildに相当するものです。 MSBuildがWindowsでプロジェクトをコンパイルできる場合、xbuildはLinuxでも同じことができるはずです(そうでなければ、 Bugzilla を参照してください)。

UPDATE: Nowadays, Mono developers/packagers are in the process of bundling the original (and recently opensourced) MSBuild, which is now crossplatform. For example it's already available in the latest Mono installers for Mac, so you can use the command-line program msbuild to build your project/solutions.

21
追加された

結構です、モノ完成品をインストールする

apt-get install mono-complete

私は理由はわかりませんが、インストールされたmono-xbuildだけでエラーが発生しました。

コマンドラインから実行します。

xbuild yourvisualcsharpproject.csproj
21
追加された
私にとっては、「このプロジェクトには出力パスが設定されていません」と表示されます。
追加された 著者 Varadha31590,
これを試してみましたか? stackoverflow.com/questions/9086795/…
追加された 著者 Olivier,

You can build in visual studio and deploy on Linux and run under mono.Have a look on this article

9
追加された
iTextSharpライブラリについて... itextsharp.dllがプロジェクトディレクトリにあっても、Visual Studioは見つからないと言います。どのように私はそれを指すことができます、あなたはそれが参照に含まれていることを上記見ることができます。
追加された 著者 Alasdair,
あなたの問題が何であるか分かりません。モノにdllを追加する方法については、この記事を参照してください。 mono-project.com/DllNotFoundException
追加された 著者 Mohamad Alhamoud,
@Alasdairはusingディレクティブを持つことは、dllへの参照を持つことと同じではありません。 usingディレクティブは、コンパイルにその名前空間の型を探すよう指示します。参照は MSBuild に、コンパイルプロセスで特定のdllを使用/含めるようにコンパイラに通知するよう指示します
追加された 著者 Rune FS,

Monoと.NET Frameworkは、利用可能な機能の点で同等ではありません。

たとえば、Monoはクロスプラットフォームの機能を提供しますが、.NET Frameworkによって提供されるいくつかのWindowsリンク機能は実装していません。 したがって、Windows上で.NETでコンパイルすることはできず、Unix/Mono上でスムーズに動作することが期待されます。 それはうまくいくかもしれないが、失敗する可能性が高い。実際、プログラムが複雑になればなるほど、最も高いのはチャンスです(あなたはモノで利用できなかったものを使用しました)。

コマンドラインツールによるコンパイル:Xbuild

.sln/.csprojをmonoに対してコマンドラインからコンパイルする場合は、xbuild(MSBuildのモノクローン)を使用します。

xbuild mysolution.sln
xbuild myproject.csproj

The man page of xbuild on Ubuntu.

xbuild.exe is located in mono installation, most likely in:

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

IDE(VS)からコンパイルする

WindowsのMono、MonoHelperのaddin(下のxbuildを使用)のVisual Studioからコンパイルすることができます。

Visual Studioの "Mono" .NET Frameworkプロファイルを対象とした別のソリューションもあります。 以下の手順は、こちらから行います。

Note: I've tried to change the location of the profile in 4.5 (but that doesn't work; either vs doesn't find it or it detects it as not installed) so always use the v4.0 directory to install a profile based on v4.0 VM. This limitation and the fact that the "Profile" thing has been discontinued makes me thinks that it won't work for higher version of Tools.

途中でUnityと同じプロファイルのトリックが使用されています。

  1. Create two registry keys:

    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. Make a link to Mono directory inside of Microsoft References Assemblies Directory (you may need to run the following with administrator rights)

    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

Paste the following inside FrameworkList.xml

<?xml version="1.0" encoding="utf-8"?>
 
  1. Visual Studio内のプロジェクトアプリケーションタブでフレームワークターゲットを変更する

MonoDevelop/Xamarin Studioでコンパイルする

MonoDevelop runs on Unix and on Windows, and you can easily switch from .Net compile/debug/run to Mono compile/debug/run within the IDE. However, while MonoDevelop is quite efficient for a C# seasonal developer, it has not reached yet the power of Visual Studio coupled with Resharper.

4
追加された
@CristianM私はそれがまだビジュアルスタジオ2017で動作しているかどうかはわかりません。 Monoは、ツールセットの仕様を定義する.netフレームワークのクローンです。 Mono/XamarinとMicrosoftが現在協力し、.netコアをリリースしたため、シナリオがまだ高いバージョンで動作するかどうかを確認する時間がなく、問題があればMSでサポートされるとは思われません(4.6または4.7)
追加された 著者 Fab,
「この制限と、「プロファイル」が廃止されたことにより、ツールの上位バージョンでは機能しないと私は考えている」あなたはツールの上位バージョンではうまくいかない理由を説明してください。私が見ているように、Monoのどのバージョンにもリンクを張ることができます(現在は4.5ですが、将来は4.6または4.7になります)。参照されるアセンブリはMonoのものを指します。
追加された 著者 Cristian M,
OK。あなたの答えをありがとう!
追加された 著者 Cristian M,

Visual StudioコードとMono/.NetCore

LinuxでC#を実行/コンパイル/デバッグする場合は、

and if you want something with exactly the same api on linux and windows, you can use .Net Core

コマンドラインで、コンパイルするには:

dotnet build  

or if you have only one project in the folder

dotnet build

and then

dotnet run
1
追加された