5

我希望增强我的编程体验,我相信我可以通过创建 Visual Studio (2012) 扩展来做到这一点。我已经开始深入研究 MSDN 上的文档,但它很密集,我正在研究它。

我有几个问题:

  1. 扩展是下面描述的场景的正确方法吗?
  2. 如果是这样,知道我应该开始研究哪个命名空间吗?
  3. 任何圣人智慧/链接RE:“陷阱”或“陷阱”?

设置 我有一个 HTML 块,它在某些元素上有一些内联 CSS。我想右键单击元素并将内联代码应用于新的或现有的样式表 (CSS)。

编码

<div>
    <div class="ui-bar-d ui-bar"  >
        <span class="WBHeaderDetail" style="margin-left: 5px; margin-right: 5px;">
            Name: <em class="WBHeaderDetailValue" style="text-decoration: underline;">@ViewBag.JobName</em>
        </span>
        <span class="WBHeaderDetail" style="margin-left: 5px; margin-right: 5px;">
            Status: <em class="WBHeaderDetailValue" style="text-decoration: underline;">@ViewBag.Status</em>
        </span>
        <a data-role="button" data-theme="b" data-icon="check" data-inline="true" data-mini="true" >Save</a>       
    </div>
</div>

可以说,扩展将公开的操作可以获取对给定元素的引用并检查内联 CSS(样式标记),将其从元素中删除,然后将该 CSS 附加到项目/解决方案中的新样式表或现有样式表中。元素是否已经具有“类”属性的值可能会影响为此项目选择的供应商。

更新

看到这个:http ://www.asp.net/vnext/overview/aspnet/whats-new

智能任务

在设计视图中,服务器控件的复杂属性通常具有关联的对话框和向导,以便于设置它们。例如,您可以使用特殊对话框将数据源添加到Repeater 控件或将列添加到GridView 控件。

但是,这种复杂属性的 UI 帮助在 Source 视图中不可用。因此,Visual Studio 11 为 Source 视图引入了 Smart Tasks。智能任务是 C# 和 Visual Basic 编辑器中常用功能的上下文感知快捷方式。

对于 ASP.NET Web 窗体控件,当插入点位于元素内部时,智能任务在服务器标记上显示为一个小字形:

在此处输入图像描述

我可以让我的代码进入那个对话框吗?

谢谢!

4

2 回答 2

3

去年我为课程做了一个小的 VS 扩展,结果非常好。它与排序、格式化和重新组织 C++ 代码文件有关。这与您想要做的有点不同,但我建议您看看CodeMaid。它具有数量惊人的功能,而且由于它是开源的,因此在我进行扩展时,源代码确实帮助了我。

不幸的是,您使用的是 HTML,而 Visual Studio 仅提供 C# 的代码模型(基本 AST)和少量 C++。您不太可能从 Visual Studio 获得任何有关 HTML 编辑的帮助。

所以我会做两件事。首先,看看这些教程。他们将帮助您为扩展创建基础并让您熟悉 API。(你可能不得不寻找其他人来增加你的知识,因为 MS 教程并不是最好的。)其次,完善你的正则表达式。完成所需内容的最佳方法可能是自己解析文件并找到内联样式标签的所有实例。然后添加一个右键菜单项,并在需要时找到相应的标签。

但同样,我将从基本教程开始。VS 扩展 API 有点奇怪,所以你可能想先做一些简单的事情来习惯它。

祝你好运,你会需要它。:p

编辑:我知道这并不能直接回答您的问题,只是提供一些建议。

于 2013-04-07T16:39:39.200 回答
3

是的,VSIX 是要走的路。

您可以查看 Web Essentials 中的一些代码。Web Essentials 执行的操作与您想要执行的操作类似。

以下是github上CSS排序器的链接:https ://github.com/madskristensen/CssSorter

而这个是 HTML ZenCoding 功能的链接: https ://github.com/madskristensen/zencoding

由于它们都涉及处理 HTML、CSS,因此您可以通过查看代码获得大量信息。与您的项目的唯一区别是您实际上同时针对这两个目标并且正在研究访问多个文件。不幸的是,对于 HTML 和 CSS,我不知道是否有可用的内置解析器。

不过,NuGet 上有一些可用的包,因此您可以尝试一下: ExCSS 样式表解析器:http ://nuget.org/packages/ExCSS/ HtmlAgilityPack:http ://nuget.org/packages/HtmlAgilityPack/

我没有直接使用这些软件包,但我想你必须尝试一下,看看它是否合适。

至于智能任务:这通常是控件设计器的一部分,我认为它不适合您想做的事情。我只是将您的扩展添加到上下文菜单中

于 2013-04-13T07:13:35.400 回答