web-dev-qa-db-ja.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;

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

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

46
Alasdair

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

[〜#〜] update [〜#〜]:最近、Mono開発者/パッケージャーはオリジナル(そして最近オープンソース化された)をバンドルする過程にあります- MSBuild 、これは現在クロスプラットフォームです。たとえば、Mac用の最新のMonoインストーラーで既に利用可能なので、コマンドラインプログラムmsbuildを使用してプロジェクト/ソリューションをビルドできます(注:Linuxディストリビューションにバンドルされるまでにはまだ長い道のりがありますmsbuildは、nugetパッケージ(別名バイナリblob)に依存しています。

23
knocte

knocteは正しい、モノコンプリートをインストールする

apt-get install mono-complete

理由はわかりませんが、mono-xbuildのみをインストールするとコンパイルエラーが発生しました。

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

xbuild yourvisualcsharpproject.csproj
22
Olivier

Visual StudioでビルドしてLinuxにデプロイし、monoで実行できます。これをご覧ください article

9

Monoと.NET Frameworkは、利用可能な機能に関して同等ではありません。

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

コマンドラインツールでのコンパイル:Xbuild

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

_xbuild mysolution.sln
xbuild myproject.csproj
_

buntuでのxbuildのマニュアルページ

xbuild.exeは、モノラルインストールにあり、ほとんどの場合、次の場所にあります。

_C:\Program Files (x86)\Mono\lib\mono\4.5
_

からコンパイルIDE(VS)

Windows上のMonoに対して、MonoHelperアドインを使用してVisual Studioからコンパイルできます(下にxbuildを使用)。

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

注:プロファイルの場所を変更しようとしました4.5では(ただし機能しません。vsが見つからないか、インストールされていないことを検出します)、常にv4.0ディレクトリを使用してv4.0 VMに基づくプロファイルをインストールします。この制限と「プロファイル」が廃止されたという事実により、それはより高いバージョンのツールでは機能しないと思われます。

Unityでも同じプロファイルトリックが使用されています

  1. 2つのレジストリキーを作成します:

    _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 Directory内の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. _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 compile/debug/runからMono compile/debug/runに簡単に切り替えることができます。ただし、MonoDevelopはC#の季節的な開発者にとって非常に効率的ですが、Visual StudioのパワーとResharperを組み合わせたものにはまだ到達していません。

7
Fab

Visual StudioコードとMono/.NetCore

LinuxでC#を実行/コンパイル/デバッグする場合は、次を使用できます。

linuxとWindowsでまったく同じAPIを使用する場合は、 。Net Core を使用できます

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

dotnet build <solution/project> 

または、フォルダーにプロジェクトが1つしかない場合

dotnet build

その後

dotnet run
1
Fab