.net - क्या आप एक पूर्व-बिल्ड इवेंट के रूप में एन्वीडीटीई के साथ एक रनकस्टम टूल कर सकते हैं?




macros t4 (2)

मैं T4MVC का उपयोग कर रहा हूं, और मैं TextTransform.exe चलाने के लिए पूर्व-बिल्ड इवेंट का उपयोग नहीं कर सकता क्योंकि यह एन्वीडीटीई पर निर्भर है, और होस्ट के रूप में होस्ट के रूप में होस्ट होना चाहिए।

यदि मैंने एक बार कस्टम उपकरण चलाया है, तो यह अच्छी तरह से काम करता है क्योंकि यह निष्पादित ( AlwaysKeepTemplateDirty = true गंदा AlwaysKeepTemplateDirty = true ) के दौरान गंदा हो जाता है, लेकिन जब आप समाधान खोलते हैं, तो इसे बिल्ड पर नहीं चला जाता है, इसलिए मैं सोच रहा था कि क्या आप टी 4 को चला सकते हैं पूर्व-बिल्ड ईवेंट के रूप में एन्वीडीटीई?


यह निश्चित रूप से टी 4 एमवीसी के क्षेत्रों में से एक है जिसे मैं हल करना चाहता हूं, लेकिन इसके लिए एक महान समाधान नहीं मिल पा रहा है। मैंने पूर्व-बिल्ड इवेंट का उपयोग करने के लिए कुछ प्रयास किए थे, लेकिन कहीं भी दिलचस्प नहीं मिला इसका मतलब यह नहीं है कि यह नहीं किया जा सकता है।

क्षमा करें, मेरे पास आपके लिए कोई हल नहीं है, लेकिन अगर कोई किसी के साथ आता है, तो मैं इसे T4MVC में एकीकृत करने के लिए खुश हूं।

डेविड


मैंने ऐसा करने का एक तरीका निकाला है यह इष्टतम नहीं है, लेकिन यह वास्तव में काम करता है। यदि आप BuildEvents को जोड़ने का काम करते हैं। OnBuildBegin

Macro IDE पर पहुंचने के लिए आप ALT + F11 को पुश करते हैं, EnvironmenEvents कोडइवेंट्स पर क्लिक करें और नीचे दिए गए कोड स्निपेट में इवेंटहोल्डर जोड़ें। सुनिश्चित करें कि इसके द्वारा स्वतः जोड़ा कोड अनुभाग के बाहर जोड़ा गया

EnvironmentEvents अब इस तरह दिखते हैं:

Option Strict Off
Option Explicit Off
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics

Public Module EnvironmentEvents

    Public Sub BuildEvents_OnBuildBegin(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildBegin
        If Scope = vsBuildScope.vsBuildScopeSolution Or Scope = vsBuildScope.vsBuildScopeProject Then
            Dim projectItem As ProjectItem = DTE.Solution.FindProjectItem("T4MVC.tt")
            If Not projectItem Is Nothing Then
                If Not projectItem.IsOpen Then
                    projectItem.Open()
                End If
                projectItem.Save()
            End If
        End If
    End Sub

#Region "Automatically generated code, do not modify"
'Automatically generated code, do not modify
'Event Sources Begin
 <System.ContextStaticAttribute()> Public WithEvents DTEEvents As EnvDTE.DTEEvents
 <System.ContextStaticAttribute()> Public WithEvents DocumentEvents As EnvDTE.DocumentEvents
 <System.ContextStaticAttribute()> Public WithEvents WindowEvents As EnvDTE.WindowEvents
 <System.ContextStaticAttribute()> Public WithEvents TaskListEvents As EnvDTE.TaskListEvents
 <System.ContextStaticAttribute()> Public WithEvents FindEvents As EnvDTE.FindEvents
 <System.ContextStaticAttribute()> Public WithEvents OutputWindowEvents As EnvDTE.OutputWindowEvents
 <System.ContextStaticAttribute()> Public WithEvents SelectionEvents As EnvDTE.SelectionEvents
 <System.ContextStaticAttribute()> Public WithEvents BuildEvents As EnvDTE.BuildEvents
 <System.ContextStaticAttribute()> Public WithEvents SolutionEvents As EnvDTE.SolutionEvents
 <System.ContextStaticAttribute()> Public WithEvents SolutionItemsEvents As EnvDTE.ProjectItemsEvents
 <System.ContextStaticAttribute()> Public WithEvents MiscFilesEvents As EnvDTE.ProjectItemsEvents
 <System.ContextStaticAttribute()> Public WithEvents DebuggerEvents As EnvDTE.DebuggerEvents
 <System.ContextStaticAttribute()> Public WithEvents ProjectsEvents As EnvDTE.ProjectsEvents
 <System.ContextStaticAttribute()> Public WithEvents TextDocumentKeyPressEvents As EnvDTE80.TextDocumentKeyPressEvents
 <System.ContextStaticAttribute()> Public WithEvents CodeModelEvents As EnvDTE80.CodeModelEvents
 <System.ContextStaticAttribute()> Public WithEvents DebuggerProcessEvents As EnvDTE80.DebuggerProcessEvents
 <System.ContextStaticAttribute()> Public WithEvents DebuggerExpressionEvaluationEvents As EnvDTE80.DebuggerExpressionEvaluationEvents
'Event Sources End
'End of automatically generated code
#End Region

End Module




t4mvc