@@ -142,15 +142,17 @@ private async ValueTask<CompilerMessage> CompileAsync(CompilerData compilerData,
142142 Dictionary < string , MetadataReference > references = new ( StringComparer . OrdinalIgnoreCase ) ;
143143
144144 OxideResolver resolver = ( OxideResolver ) _metadataReferenceResolver ;
145+
145146 if ( compilerData . StdLib )
146147 {
147- references . Add ( "System.Private.CoreLib.dll" , resolver . Reference ( "System.Private.CoreLib.dll" ) ! ) ;
148- references . Add ( "netstandard.dll" , resolver . Reference ( "netstandard.dll" ) ! ) ;
149- references . Add ( "System.Runtime.dll" , resolver . Reference ( "System.Runtime.dll" ) ! ) ;
150- references . Add ( "System.Collections.dll" , resolver . Reference ( "System.Collections.dll" ) ! ) ;
151- references . Add ( "System.Collections.Immutable.dll" , resolver . Reference ( "System.Collections.Immutable.dll" ) ! ) ;
152- references . Add ( "System.Linq.dll" , resolver . Reference ( "System.Linq.dll" ) ! ) ;
153- references . Add ( "System.Data.Common.dll" , resolver . Reference ( "System.Data.Common.dll" ) ! ) ;
148+ references . Add ( "System.Private.CoreLib.dll" , resolver . AddReference ( "System.Private.CoreLib.dll" ) ! ) ;
149+ references . Add ( "netstandard.dll" , resolver . AddReference ( "netstandard.dll" ) ! ) ;
150+ references . Add ( "System.Runtime.dll" , resolver . AddReference ( "System.Runtime.dll" ) ! ) ;
151+ references . Add ( "System.Collections.dll" , resolver . AddReference ( "System.Collections.dll" ) ! ) ;
152+ references . Add ( "System.Collections.Immutable.dll" , resolver . AddReference ( "System.Collections.Immutable.dll" ) ! ) ;
153+ references . Add ( "System.Linq.dll" , resolver . AddReference ( "System.Linq.dll" ) ! ) ;
154+ references . Add ( "System.Data.Common.dll" , resolver . AddReference ( "System.Data.Common.dll" ) ! ) ;
155+
154156 }
155157
156158 if ( compilerData . ReferenceFiles is { Length : > 0 } )
@@ -168,6 +170,7 @@ private async ValueTask<CompilerMessage> CompileAsync(CompilerData compilerData,
168170 referenceFile . Data . Length == 0 )
169171 ? MetadataReference . CreateFromFile ( referenceFile . Name )
170172 : MetadataReference . CreateFromImage ( referenceFile . Data , filePath : referenceFile . Name ) ;
173+
171174 continue ;
172175 }
173176 default :
@@ -211,11 +214,10 @@ private async ValueTask<CompilerMessage> CompileAsync(CompilerData compilerData,
211214
212215 _logger . LogDebug ( $ "Added { syntaxTrees . Count } plugins to the project") ;
213216
214- CSharpCompilationOptions compilationOptions = new ( compilerData . OutputKind ( ) , metadataReferenceResolver : resolver ,
215- platform : compilerData . Platform ( ) ,
216- allowUnsafe : true ,
217- deterministic : true ,
218- optimizationLevel : OptimizationLevel . Debug ) ;
217+ CSharpCompilationOptions compilationOptions = new CSharpCompilationOptions ( compilerData . OutputKind ( ) ,
218+ metadataReferenceResolver : resolver , platform : compilerData . Platform ( ) , allowUnsafe : true ,
219+ deterministic : true , optimizationLevel : OptimizationLevel . Debug )
220+ . WithAssemblyIdentityComparer ( DesktopAssemblyIdentityComparer . Default ) ;
219221
220222 string assemblyName = Path . GetRandomFileName ( ) ;
221223 CSharpCompilation compilation = CSharpCompilation . Create ( assemblyName , syntaxTrees . Values ,
@@ -295,7 +297,14 @@ private void CompileProject(CSharpCompilation compilation, CompilerData compiler
295297 }
296298 else
297299 {
298- _logger . LogError ( $ "[{ diagnostic . Id } ] { diagnostic . GetMessage ( ) } ") ;
300+ string diagnosticMessage = diagnostic . GetMessage ( ) ;
301+ compilerMessage . Errors ??= new List < CompilerError > ( ) ;
302+ compilerMessage . Errors . Add ( new CompilerError
303+ {
304+ Message = diagnosticMessage ,
305+ } ) ;
306+
307+ _logger . LogError ( $ "[{ diagnostic . Id } ] { diagnosticMessage } ") ;
299308 }
300309 }
301310
0 commit comments