@@ -51,6 +51,7 @@ public sealed class MyAssemblyGen
5151#if NET9_0_OR_GREATER
5252 MethodBuilder _entryPointMethodBuilder ; // non-null means we have an entry point
5353 ISymbolDocumentWriter _docWriter = null ; // non-null means we are writing debug info
54+ public void SetDocWriter ( ISymbolDocumentWriter dw ) => _docWriter = dw ;
5455#endif
5556
5657 internal AssemblyBuilder AssemblyBuilder => _myAssembly ;
@@ -196,29 +197,31 @@ public string SaveAssembly()
196197 }
197198
198199#if NETFRAMEWORK
199- _myAssembly . Save ( _outFileName , PortableExecutableKinds . ILOnly , ImageFileMachine . I386 ) ;
200- return Path . Combine ( _outDir , _outFileName ) ;
200+ var savePath = Path . Combine ( _outDir , _outFileName ) ;
201+ _myAssembly . Save ( savePath , PortableExecutableKinds . ILOnly , ImageFileMachine . I386 ) ;
202+ return savePath ;
201203#elif NET9_0_OR_GREATER
204+ var savePath = Path . Combine ( _outDir , _outFileName ) ;
202205 if ( _entryPointMethodBuilder is not null || _docWriter is not null )
203- SavePersistedAssemblyHard ( ) ;
206+ SavePersistedAssemblyHard ( savePath ) ;
204207 else
205- ( ( PersistedAssemblyBuilder ) _myAssembly ) . Save ( _outFileName ) ;
206- return Path . Combine ( _outDir , _outFileName ) ;
208+ ( ( PersistedAssemblyBuilder ) _myAssembly ) . Save ( savePath ) ;
209+ return savePath ;
207210#else
208211 return null ;
209212#endif
210213
211214 }
212215
213216#if NET9_0_OR_GREATER
214- private void SavePersistedAssemblyHard ( )
217+ private void SavePersistedAssemblyHard ( string savePath )
215218 {
216219 PersistedAssemblyBuilder ab = ( PersistedAssemblyBuilder ) _myAssembly ;
217220 MetadataBuilder metadataBuilder = ab . GenerateMetadata ( out BlobBuilder ilStream , out BlobBuilder fieldData , out MetadataBuilder pdbBuilder ) ;
218221
219222 MethodDefinitionHandle entryPointHandle =
220223 _entryPointMethodBuilder is null
221- ? default ( MethodDefinitionHandle )
224+ ? default
222225 : MetadataTokens . MethodDefinitionHandle ( _entryPointMethodBuilder . MetadataToken ) ;
223226 DebugDirectoryBuilder debugDirectoryBuilder = GeneratePdb ( pdbBuilder , metadataBuilder . GetRowCounts ( ) , entryPointHandle ) ;
224227
@@ -234,7 +237,7 @@ _entryPointMethodBuilder is null
234237 peBuilder . Serialize ( peBlob ) ;
235238
236239 // Create the executable:
237- using FileStream fileStream = new ( _outFileName , FileMode . Create , FileAccess . Write ) ;
240+ using FileStream fileStream = new ( savePath , FileMode . Create , FileAccess . Write ) ;
238241 peBlob . WriteContentTo ( fileStream ) ;
239242 }
240243
@@ -244,13 +247,13 @@ static DebugDirectoryBuilder GeneratePdb(MetadataBuilder pdbBuilder, ImmutableAr
244247 PortablePdbBuilder portablePdbBuilder = new PortablePdbBuilder ( pdbBuilder , rowCounts , entryPointHandle ) ;
245248 BlobContentId pdbContentId = portablePdbBuilder . Serialize ( portablePdbBlob ) ;
246249 // In case saving PDB to a file
247- using FileStream fileStream = new FileStream ( "MyAssemblyEmbeddedSource.pdb" , FileMode . Create , FileAccess . Write ) ;
248- portablePdbBlob . WriteContentTo ( fileStream ) ;
250+ // using FileStream fileStream = new FileStream("MyAssemblyEmbeddedSource.pdb", FileMode.Create, FileAccess.Write);
251+ // portablePdbBlob.WriteContentTo(fileStream);
249252
250253 DebugDirectoryBuilder debugDirectoryBuilder = new DebugDirectoryBuilder ( ) ;
251254 debugDirectoryBuilder . AddCodeViewEntry ( "MyAssemblyEmbeddedSource.pdb" , pdbContentId , portablePdbBuilder . FormatVersion ) ;
252255 // In case embedded in PE:
253- // debugDirectoryBuilder.AddEmbeddedPortablePdbEntry(portablePdbBlob, portablePdbBuilder.FormatVersion);
256+ debugDirectoryBuilder . AddEmbeddedPortablePdbEntry ( portablePdbBlob , portablePdbBuilder . FormatVersion ) ;
254257 return debugDirectoryBuilder ;
255258 }
256259#endif
0 commit comments