私はmon/mcsを使用して、動的に生成された(Protocol Buffer)コードをUnityで使用するためのマネージDLLにコンパイルしています。 Unity 5.5以降、4.0フレームワークに対してコンパイルされたDLLはロードされなくなりました(私は2.0を望んでいると思います)。どのように特定のフレームワークを対象とするmono/mcsでマネージドdllをコンパイルしますか?
私はMonoDevelopやVisual Studioでこれを行う方法を見てきましたが、protobufコードが動的に生成されるためコマンドラインでこれを行いたいので、シェルスクリプトを使用してコンパイルするほうが簡単です。シェルスクリプトで
は、我々はこのような何かを:私たちはこれを行うとmono --runtime=v2.0.50727 <stuff>
mcs -langversion:ISO-2 -sdk:2 -r:$unityengine_dll -target:library -out:$output <stuff>
、我々は常に警告が実際にそれがターゲット・ランタイムのように見えるた(以下の形式にされていない来ていたしました正しく設定されています)。これらの警告があっても、Unity 5.4.xではdllをうまく読み込んでコンパイルします。ユニティでは5.5以降、DLLをロードすることはできていないようですし、我々は変更する必要が何
WARNING: The runtime version supported by this application is unavailable.
Using default runtime: v4.0.30319
No framework specified; defaulting to 4.0.30319.42000
(それはDLLで定義されるべきものを見つけていない場合)コンパイルエラーに死にます?私は--runtime、--langversion、および-sdk -libのmono/mcsオプションを使用して遊んでいます。団結のためにコンパイルするためにこれらを設定する必要はありますか?現在の最新バージョンのmonoをコンパイルするのにも、Unityに付属しているモノを使ってみても、どちらも同じ問題があります。
環境:OSXシエラ10.12.3、団結5.5は、私はちょうど/Library/Frameworks/Mono.framework/Versions/3.12内のバージョンにモノおよびMCSを指すように持っていたよう4.6.2.16