Asp.net mvc 用于导航到T4MVC链接的Visual Studio宏

Asp.net mvc 用于导航到T4MVC链接的Visual Studio宏,asp.net-mvc,visual-studio,macros,t4mvc,visual-studio-macros,Asp.net Mvc,Visual Studio,Macros,T4mvc,Visual Studio Macros,我使用T4MVC,我对它很满意,并希望保留它——它可以减少运行时缺陷。不幸的是,这使得浏览视图和内容(在T4MVC中也称为视图和链接)变得更加困难。即使使用Resharper,我也无法导航到引用的项: 我可以手动创建宏来执行此操作吗?以前从未构建过VS IDE宏,我不知道如何获得某些东西,比如“转到定义”过程的内部结果,如果可能的话 如果您不熟悉T4MVC,以下是宏可能提供的帮助: 给定标记:Links.Content.Scripts.jQuery_js在文件MyView.cshtml中,“(

我使用T4MVC,我对它很满意,并希望保留它——它可以减少运行时缺陷。不幸的是,这使得浏览视图和内容(在T4MVC中也称为视图和链接)变得更加困难。即使使用Resharper,我也无法导航到引用的项:

我可以手动创建宏来执行此操作吗?以前从未构建过VS IDE宏,我不知道如何获得某些东西,比如“转到定义”过程的内部结果,如果可能的话

如果您不熟悉T4MVC,以下是宏可能提供的帮助:

  • 给定标记:
    Links.Content.Scripts.jQuery_js
    在文件MyView.cshtml中,“(F12)转到定义”。这是正常的

  • 在完成相关任务后:
    public只读字符串jQuery\u js=“~/Content/Scripts/jQuery.js”在T4MVC生成的文件中(非常好,谢谢David,但我们真的不需要看到),捕获分配的字符串并关闭文件

  • 在解决方案资源管理器中导航到由捕获的字符串表示的物理路径

  • 此过程也适用于视图/布局/母版页/部分等

    如果您提供了一个宏或宏链接来执行此操作,或者有另一个解决方案,那就太好了。否则,关于如何在VS宏中简单地执行步骤3的提示将特别受欢迎,并将收到我的upvote。完成后,我会将宏发回这里作为答案


    谢谢

    这里有一个Visual Studio宏可以帮助您

    它的作用

    现在,您可能会在以下位置使用T4MVC引用:

    • 布局=MVC.Shared.Views.MasterSiteTheme
    • AddResource(Links.Content.Script.jQueryXYZ_-js)
    • 返回视图(MVC.Account.Views.SignIn)
    • @Html.Partial(MVC.Common.Views.ContextNavigationTree)
    • @ActionLink(“登录/注册”,MVC.Account.SignIn())
    F12(转到定义)已经适用于最后一个项目符号(操作),但此攻击旨在涵盖其他场景(参考资料)

    Imports EnvDTE
    Imports System.IO
    
    Public Module NavT4Link
        Sub NavigateToLink()
            DTE.ExecuteCommand("Edit.GoToDefinition")
            Dim navpath As String = Path.GetFileName(DTE.ActiveDocument.FullName)
            Dim isContentLink As Boolean = navpath.Equals("T4MVC.cs")
            If (isContentLink Or navpath.EndsWith("Controller.generated.cs")) Then
                Dim t4doc As TextDocument = DTE.ActiveDocument.Object()
                navpath = CurrentLinePathConstant(t4doc)
                If isContentLink Then
                    t4doc.Selection.MoveToPoint(t4doc.Selection.ActivePoint.CodeElement(vsCMElement.vsCMElementClass).StartPoint)
                    t4doc.Selection.FindText("URLPATH")
                    navpath = Path.Combine(CurrentLinePathConstant(t4doc), navpath)
                End If
                If navpath.StartsWith("~") Then
                    DTE.ActiveDocument.Close(vsSaveChanges.vsSaveChangesPrompt)
                    Dim proj As Object = DTE.Solution.FindProjectItem(DTE.ActiveDocument.FullName).ContainingProject
                    navpath = Path.GetDirectoryName(proj.Fullname()) + navpath.TrimStart("~")
                    DTE.ItemOperations.OpenFile(navpath)
                End If
            End If
        End Sub
    
        Function CurrentLinePathConstant(ByVal t4doc As TextDocument) As String
            t4doc.Selection.SelectLine()
            Dim sa() As String = t4doc.Selection.Text().Split("""")
            If sa.Length > 1 Then Return sa(sa.Length - 2) Else Return ""
        End Function
    End Module
    
    安装

    • 在Visual Studio中,按“Alt-F8”打开宏资源管理器
    • 右键单击“我的宏”,选择“新建模块…”,然后单击“添加”
    • 用此处显示的代码替换所有文本
    • 保存并退出宏编辑器
    • 打开“工具:选项”
    • 在左侧窗格中,选择“环境:键盘”
    • 在“显示包含的命令”文本字段中输入“T4”
    • 在“按快捷键:”字段中,按“F12”键
    • 单击“分配”和“确定”
    在未修补的VS上,此安装过程不会产生“可绑定”宏。一种解决方法是(CTRL-SHIFT-R-R)录制一个空宏,并将代码粘贴到其中而不重命名它。如果有人知道在VS中安装宏的更具文档性的方法,请发表评论

    注意事项/注意事项

    它的目的是替换当前的F12功能,因此,如果它不是T4MVC链接,它将执行常规操作,否则它将继续打开资源。它处理大多数情况,但不处理MVC生成的空控制器方法。那些你在以前的地方被抛弃的


    对于内容/资产/链接资源,在解决方案资源管理器中导航到它可能是合适的,例如图像文件,但我在Visual Studio文档中没有看到该功能。

    宏在VS 2013中不再可用。有没有其他方法可以获得相同的行为?