删除Codedom生成的代码中的项目

时间:2010-08-13 00:46:27

标签: vb.net codedom

有没有办法从VB代码中删除Codedom中生成的代码中的项目?

例如,在我生成的所有代码的顶部,它有:

'------------------------------------------------------------------------------
' 
'     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 

我希望这两个消失 - 评论的文本和Option xxx。我尝试使用CodeGeneratorOptions,但无法从生成的代码中删除上述内容。

3 个答案:

答案 0 :(得分:2)

对于#2,你试过这个吗?

CodeCompileUnit.UserData.Add("AllowLateBound", False) ' strict on
CodeCompileUnit.UserData.Add("RequireVariableDeclaration", False) ' explicit off

(其中CodeCompileUnit是CodeCompileUnit类型的变量)

答案 1 :(得分:2)

不,不能删除。它被硬编码到VBC编译器中。您可以在Reflector中的system.dll中看到这一点。

答案 2 :(得分:2)

您可以使用StringWriter输出您的代码,然后使用StringBuilder.Remove删除第一行:

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);
}

这很难看,但它有效吗