有没有办法从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
,但无法从生成的代码中删除上述内容。
答案 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);
}
这很难看,但它有效吗