2010-08-13 23 views
5

Có cách nào để xóa các mục trong mã được tạo trong Codedom khỏi mã VB không?Xóa các mục trong mã được tạo ra từ Codedom

Ví dụ ở trên cùng của tất cả các mã tôi tạo ra, nó có:

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

Tôi muốn cả hai ra đi - văn bản nhận xét và cả Option xxx. Tôi đã thử đồ chơi xung quanh với CodeGeneratorOptions, nhưng không thể xóa phần trên khỏi mã được tạo.

+0

Xem thêm http: // stackoverflow.com/questions/2289889/how-do-i-customize-the-auto-generated-comment-when-using-net-codedom-code-genera –

+0

@Dumb Guy: Tốt tìm thấy. Tôi đã tìm kiếm và không đi qua cái đó. Vì vậy, câu trả lời nó cho # 1. Bạn có ý tưởng nào về việc xóa 'Tùy chọn' không? –

Trả lời

2

Không, đó không thể được gỡ bỏ. Nó được mã hóa cứng vào VBCompiler. Bạn có thể thấy điều này trong system.dll trong Reflector.

2

Đối với # 2, bạn đã thử điều này chưa?

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

(nơi CodeCompileUnit là một biến kiểu CodeCompileUnit)

+0

Tôi có, tiếc là nó không loại bỏ chúng, hoặc là 'False' hoặc' True'. –

2

Bạn có thể sử dụng một StringWriter để đầu ra mã của bạn, sau đó sử dụng StringBuilder.Remove để xóa những dòng đầu tiên:

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

Nó xấu xí, nhưng nó hoạt động ™

+0

Đó là một cách hay để làm điều đó. Đặc biệt là kế toán cho C# so với VB –

Các vấn đề liên quan