3

これは、Visual Studioを使用して簡単に実行できますが、Visual StudioでコンパイルされたDLLはUnityでうまく機能しないため、MonoDevelopを使用してこれを実現する必要があります。MonoDevelop DLLは正常に動作していますが、.NET 2.0ランタイムを対象としている間、デフォルトの関数パラメーター(C#4.0機能)を使用したいと思います。

これはMonoDevelopで可能ですか?どうすればこれを設定できますか?

追加:VisualStudioおよびMonoDevelopのコマンドラインを構築する

比較しやすいように引数を並べ替えました。

MonoDevelop:ターゲット= Mono / .NET 4

C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe
/noconfig
/warn:4
"/define:TRACE"
/optimize+
"/out:C:\TestLibraries\TestEditor\bin\Release\TestEditor.dll"
/t:library

/nologo

"/r:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.dll"
"/r:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Core.dll"
"/r:C:\Program Files (x86)\Unity\Editor\Data\Managed\UnityEditor.dll"
"/r:C:\Program Files (x86)\Unity\Editor\Data\Managed\UnityEngine.dll"

/fullpaths
/utf8output

MonoDevelop:ターゲット= Mono / .NET 3.5(最初の興味深いもの)

C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
/warn:4
"/define:TRACE"
/optimize+
"/out:C:\TestLibraries\TestEditor\bin\Release\TestEditor.dll"
/t:library

/nologo
-nostdlib

"/r:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll"
"/r:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll"
"/r:C:\Program Files (x86)\Unity\Editor\Data\Managed\UnityEditor.dll"
"/r:C:\Program Files (x86)\Unity\Editor\Data\Managed\UnityEngine.dll"

/fullpaths
/utf8output

Visual Studio:ターゲット= .NET 4

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe
/noconfig
/nowarn:1701,1702
/warn:4
/define:TRACE
/optimize+
/out:obj\Release\TestEditor.dll
/target:library

/nostdlib+ /errorreport:prompt

/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll"
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Core.dll"
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.dll"
/reference:"C:\Program Files (x86)\Unity\Editor\Data\Managed\UnityEngine.dll"

/debug:pdbonly
/filealign:512

Visual Studio:ターゲット= .NET 3.5(2番目に興味深いもの)

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe
/noconfig
/nowarn:1701,1702
/warn:4
/define:TRACE
/optimize+
/out:obj\Release\TestEditor.dll
/target:library

/nostdlib+ /errorreport:prompt

/reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll"
/reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll
/reference:"C:\Program Files (x86)\Unity\Editor\Data\Managed\UnityEngine.dll"

/debug:pdbonly
/filealign:512
4

2 に答える 2

2

ここには2つの問題があります。

Q1)現在のMonoDevelopで.Net 2.0互換の.dllまたは.exeをビルドするにはどうすればよいですか?

A:できるかどうかわかりません。回避策は、MonoDevelop2.4.xをダウンロードしてインストールすることです。

Q2)C#4.0のデフォルトの関数パラメーターが必要ですが、.Net2.0をターゲットにします

A:できません:) .Net 2.0をターゲットにする場合は、.Net 2.0と互換性のあるC#言語機能のサブセットを使用する必要があります。C#4.0言語機能を使用する場合は、おそらく少なくともいくつかの.Net4.0ライブラリが必要になります...これは事実上.Net4.0が必要になることを意味します。

于 2012-08-25T02:51:59.570 に答える
2

最新の安定したMonoバージョン(2.10.9)に付属する2.0 C#コンパイラ(mcs / gmcs)は、デフォルトの関数パラメータをサポートしています。新しいコンソールプロジェクトを作成し、ターゲットフレームワークを2.0に変更して、デフォルトの関数パラメーターを正常にコンパイルしました。

于 2012-09-04T10:40:42.553 に答える