@@ -53,9 +53,12 @@ private static int Compile(string[] args, Logger logger, Settings settings)
5353 var unityEditorDataDir = GetUnityEditorDataDir ( ) ;
5454 var projectDir = Directory . GetCurrentDirectory ( ) ;
5555 var targetAssembly = compilationOptions . First ( line => line . StartsWith ( "-out:" ) ) . Substring ( 10 ) . Trim ( '\' ' ) ;
56+ var monoProfile = compilationOptions . First ( line => line . StartsWith ( "-define:__UNITY_PROFILE__" ) ) . Substring ( 25 ) ;
57+ if ( monoProfile == "2_0" ) monoProfile = "2.0" ;
5658
5759 logger ? . Append ( $ "CSharpCompilerWrapper.exe version: { Assembly . GetExecutingAssembly ( ) . GetName ( ) . Version } ") ;
5860 logger ? . Append ( $ "Platform: { CurrentPlatform } ") ;
61+ logger ? . Append ( $ "Mono profile: { monoProfile } ") ;
5962 logger ? . Append ( $ "Target assembly: { targetAssembly } ") ;
6063 logger ? . Append ( $ "Project directory: { projectDir } ") ;
6164 logger ? . Append ( $ "Unity 'Data' or 'Frameworks' directory: { unityEditorDataDir } ") ;
@@ -67,15 +70,15 @@ private static int Compile(string[] args, Logger logger, Settings settings)
6770 return - 1 ;
6871 }
6972
70- var compiler = CreateCompiler ( settings . Compiler , logger , CurrentPlatform , projectDir , compilationOptions , unityEditorDataDir ) ;
73+ var compiler = CreateCompiler ( settings . Compiler , logger , CurrentPlatform , monoProfile , projectDir , compilationOptions , unityEditorDataDir ) ;
7174
7275 logger ? . Append ( $ "Compiler: { compiler . Name } ") ;
7376 logger ? . Append ( "" ) ;
7477 logger ? . Append ( "- Compilation -----------------------------------------------" ) ;
7578 logger ? . Append ( "" ) ;
7679
7780 var stopwatch = Stopwatch . StartNew ( ) ;
78- var exitCode = compiler . Compile ( CurrentPlatform , unityEditorDataDir , responseFile ) ;
81+ var exitCode = compiler . Compile ( CurrentPlatform , monoProfile , unityEditorDataDir , responseFile ) ;
7982 stopwatch . Stop ( ) ;
8083
8184 logger ? . Append ( $ "Elapsed time: { stopwatch . ElapsedMilliseconds / 1000f : F2} sec") ;
@@ -105,17 +108,19 @@ private static int Compile(string[] args, Logger logger, Settings settings)
105108 return 0 ;
106109 }
107110
108- private static Compiler CreateCompiler ( CompilerType compilerType , Logger logger , Platform platform , string projectDir , string [ ] compilationOptions , string unityEditorDataDir )
111+ private static Compiler CreateCompiler ( CompilerType compilerType , Logger logger , Platform platform , string monoProfile , string projectDir , string [ ] compilationOptions , string unityEditorDataDir )
109112 {
110113 var compilerDirectory = Path . Combine ( projectDir , LANGUAGE_SUPPORT_DIR ) ;
111114
112115 switch ( compilerType )
113116 {
114117 case CompilerType . Auto :
115- return FindSuitableCompiler ( logger , platform , projectDir , compilationOptions , unityEditorDataDir ) ;
118+ return FindSuitableCompiler ( logger , platform , monoProfile , projectDir , compilationOptions , unityEditorDataDir ) ;
116119
117120 case CompilerType . Mono3 :
118- var stockCompilerPath = Path . Combine ( unityEditorDataDir , @"Mono/lib/mono/2.0/gmcs.exe" ) ;
121+ var stockCompilerPath = monoProfile == "2.0"
122+ ? Path . Combine ( unityEditorDataDir , @"Mono/lib/mono/2.0/gmcs.exe" )
123+ : Path . Combine ( unityEditorDataDir , @"Mono/lib/mono/" + monoProfile + "/smcs.exe" ) ;
119124 return new Mono30Compiler ( logger , stockCompilerPath ) ;
120125
121126 case CompilerType . Mono5 :
@@ -142,7 +147,7 @@ private static Compiler CreateCompiler(CompilerType compilerType, Logger logger,
142147 return null ;
143148 }
144149
145- private static Compiler FindSuitableCompiler ( Logger logger , Platform platform , string projectDir , string [ ] compilationOptions , string unityEditorDataDir )
150+ private static Compiler FindSuitableCompiler ( Logger logger , Platform platform , string monoProfile , string projectDir , string [ ] compilationOptions , string unityEditorDataDir )
146151 {
147152 Compiler compiler = null ;
148153
@@ -185,7 +190,9 @@ private static Compiler FindSuitableCompiler(Logger logger, Platform platform, s
185190 if ( compiler == null )
186191 {
187192 // Using stock Mono C# 3.0 compiler
188- var stockCompilerPath = Path . Combine ( unityEditorDataDir , @"Mono/lib/mono/2.0/gmcs.exe" ) ;
193+ var stockCompilerPath = monoProfile == "2.0"
194+ ? Path . Combine ( unityEditorDataDir , @"Mono/lib/mono/2.0/gmcs.exe" )
195+ : Path . Combine ( unityEditorDataDir , @"Mono/lib/mono/" + monoProfile + "/smcs.exe" ) ;
189196 compiler = new Mono30Compiler ( logger , stockCompilerPath ) ;
190197 }
191198
@@ -235,4 +242,4 @@ private static string GetUnityEditorDataDir()
235242 var path = monoPath . Substring ( 0 , index ) ;
236243 return path ;
237244 }
238- }
245+ }
0 commit comments