Asp.net mvc 用于导航到T4MVC链接的Visual Studio宏
我使用T4MVC,我对它很满意,并希望保留它——它可以减少运行时缺陷。不幸的是,这使得浏览视图和内容(在T4MVC中也称为视图和链接)变得更加困难。即使使用Resharper,我也无法导航到引用的项: 我可以手动创建宏来执行此操作吗?以前从未构建过VS IDE宏,我不知道如何获得某些东西,比如“转到定义”过程的内部结果,如果可能的话 如果您不熟悉T4MVC,以下是宏可能提供的帮助: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中,“(
Links.Content.Scripts.jQuery_js
在文件MyView.cshtml中,“(F12)转到定义”。这是正常的public只读字符串jQuery\u js=“~/Content/Scripts/jQuery.js”代码>在T4MVC生成的文件中(非常好,谢谢David,但我们真的不需要看到),捕获分配的字符串并关闭文件
谢谢 这里有一个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())
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”键
- 单击“分配”和“确定”
对于内容/资产/链接资源,在解决方案资源管理器中导航到它可能是合适的,例如图像文件,但我在Visual Studio文档中没有看到该功能。宏在VS 2013中不再可用。有没有其他方法可以获得相同的行为?