2009-07-21 17 views
5

Tôi muốn tạo đoạn mã intellisense sử dụng Ctl K + Ctl X thực sự thực thi mã khi nó chạy ... ví dụ, tôi muốn thực hiện như sau:Tạo một Guid mới bên trong đoạn mã sử dụng C#

<![CDATA[string.Format("{MM/dd/yyyy}", System.DateTime.Now);]]> 

Nhưng thay vì cho tôi giá trị chuỗi đó, tôi muốn ngày theo định dạng được chỉ định.

Ví dụ khác về những gì tôi muốn là tạo một hướng dẫn mới nhưng cắt ngắn đến octet đầu tiên, vì vậy tôi muốn sử dụng tạo một hướng dẫn mới bằng System.Guid.NewGuid(); để cung cấp cho tôi {798400D6-7CEC-41f9-B6AA-116B926802FE} chẳng hạn nhưng tôi muốn giá trị: 798400D6 từ đoạn mã.

Tôi đang mở để không sử dụng đoạn mã Intellisense Đoạn mã .. Tôi chỉ nghĩ rằng sẽ dễ dàng.

Trả lời

2

Đây là những gì tôi đã làm thay vì với một VS Macro

Public Sub InsertPartialGuid()    
     Dim objSel As TextSelection = DTE.ActiveDocument.Selection   
     Dim NewGUID As String = String.Format("{0}", (System.Guid.NewGuid().ToString().ToUpper().Split("-")(0))) 
     objSel.Insert(NewGUID, vsInsertFlags.vsInsertFlagsContainNewText) 
     objSel = Nothing 
    End Sub 
+1

Bạn có biết cách nào để thực hiện việc này trong phiên bản Visual Studio mới hơn không hỗ trợ các macro không? –

1

Đối với GUID, bạn có thể sử dụng:

string firstOctet = System.Guid.NewGuid().ToString().Split('-')[0]; 
0

Để đạt được những gì bạn đang cố gắng để làm với khối XML của bạn, bạn sẽ cần phải hoặc là nhúng một động cơ ngôn ngữ kịch bản như IronPython, hoặc viết động cơ đơn giản của riêng bạn. Mã nguồn C# không được biên dịch tại thời gian chạy, cũng không phải mã nguồn được đánh giá khi chạy. Mã bytecode IL là, nhưng không phải là mã nguồn có thể đọc được.

+0

trong Visual Studio, có một C# dựa trên ngôn ngữ khuôn mẫu gọi là T4 bạn có thể sử dụng. – Jimmy

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