vb.netcodedom

Removing items in code generated from Codedom


Is there a way to remove items in code generated in Codedom from VB code?

For example at the top of all the code I generate, it has:

'------------------------------------------------------------------------------
' 
'     This code was generated by a tool.
'     Runtime Version:4.0.30319.1
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' 
'------------------------------------------------------------------------------
Option Strict Off 
Option Explicit On 

I'd like both of these to go away - the commented text and the both the Option xxx. I've tried toying around with CodeGeneratorOptions, but have not been able to remove the above from generated code.


Solution

  • You can use a StringWriter to output your code, then use StringBuilder.Remove in order to delete the first lines:

    using (var stringWriter = new StringWriter())
    using (var streamWriter = new StreamWriter(path))
    {
        codeDomProvider.GenerateCodeFromCompileUnit(unit, stringWriter, options);
        StringBuilder sb = stringWriter.GetStringBuilder();
        /* Remove the header comment (444 is for C#, use 435 for VB) */
        sb.Remove(0, 444);
        streamWriter.Write(sb);
    }
    

    It's ugly, but it works ™