2009-07-21 14 views
5

Chcę utworzyć fragment kodu intellisense za pomocą Ctl K + Ctl X, który faktycznie wykonuje kod, gdy działa ... na przykład, chciałbym wykonać następujące czynności:Tworzenie nowego Guida wewnątrz fragmentu kodu za pomocą C#

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

Zamiast podawać tę wartość ciągu, chcę podać datę w określonym formacie.

Innym przykładem tego, czego chcę, jest utworzenie nowego Guida, ale obcięcie do pierwszego oktetu, więc chciałbym użyć stworzenia nowego Guida przy użyciu System.Guid.NewGuid(); na przykład {798400D6-7CEC-41f9-B6AA-116B926802FE}, ale chcę mieć wartość: 798400D6 z fragmentu kodu.

Jestem otwarty na to, że nie używam fragmentu kodu IntelliSense. Po prostu myślałem, że to będzie łatwe.

Odpowiedz

2

To, co zrobiłem, zamiast z 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

Czy znasz jakiś sposób to zrobić w nowszej wersji programu Visual Studio, które nie obsługuje makr? –

1

Dla GUID, można użyć:

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

Aby osiągnąć to, co próbujesz zrobić ze swoim bloku XML, będziesz musiał albo osadzić silnik języka skryptowego, takich jak IronPython, lub napisz swój własny prosty silnik. Kod źródłowy C# nie jest kompilowany podczas wykonywania, ani kod źródłowy nie jest oceniany w czasie wykonywania. Kod bajtowy IL jest, ale nie jest czytelnym dla człowieka kodem źródłowym.

+0

w Visual Studio, jest to C# -na język szablonów zwany T4 można użyć. – Jimmy

Powiązane problemy