导入和导出任务列表

本文介绍如何使用自定义Visual Studio宏来实现项目任务列表的导出与导入功能,包括XML文件格式说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该篇文章是我于2009年6月10日通过自己编写的工具,批量从位于在博客园的博客站点(http://chenxizhang.cnblogs.com)同步而来。文章中的图片地址仍然是链接到博客园的。特此说明!

陈希章

原文地址:http://www.cnblogs.com/chenxizhang/archive/2008/08/20/1271980.html
原文标题:导入和导出任务列表
原文发表:2008/8/20 2:21:00

Visual Studio的IDE可以用任务列表保存我们在项目进展期间的一些信息。我个人也很喜欢用。但默认情况下是没有办法将这些信息保存起来的,更谈不上我们把它导出其他的格式了。

image

 

为此,我专门写了两个宏去做这个事情

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics
Imports System.Windows.Forms
Imports System.IO
Imports System.Xml
'''''''''''''''''''''''''''''''''''''''''''''''''''''
'导入和导出用户定义任务列表的宏模块
'作者:陈希章
'''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Module TaskManagementModule
    Public Class WinWrapper
        Implements System.Windows.Forms.IWin32Window

        Overridable ReadOnly Property Handle() As System.IntPtr Implements System.Windows.Forms.IWin32Window.Handle
            Get
                Dim iptr As New System.IntPtr(DTE.MainWindow.HWnd)
                Return iptr
            End Get
        End Property
    End Class
    _
    Public Sub ExportTaskList()
        Dim winptr As New WinWrapper
        Dim dialog As New SaveFileDialog

        dialog.Filter = "任务列表(*.XML)|*.XML"
        dialog.Title = "保存为..."
        If dialog.ShowDialog(winptr) = DialogResult.OK Then
            Dim fs As New FileStream(dialog.FileName, FileMode.OpenOrCreate)
            Dim xw As New XmlTextWriter(fs, System.Text.Encoding.UTF8)
            xw.WriteStartDocument()
            xw.WriteStartElement("TaskList")
            For Each task As TaskItem In DTE.ToolWindows.TaskList.TaskItems
                xw.WriteStartElement("TaskItem")
                xw.WriteStartElement("Category")
                xw.WriteCData(task.Category)
                xw.WriteEndElement()

                xw.WriteStartElement("SubCategory")
                xw.WriteCData(task.SubCategory)
                xw.WriteEndElement()

                xw.WriteStartElement("Description")
                xw.WriteCData(task.Description)
                xw.WriteEndElement()

                xw.WriteEndElement()
            Next
            xw.WriteEndElement()
            xw.Close()

        End If
    End Sub
    _
    Public Sub ImportTaskList()
        Dim winptr As New WinWrapper
        Dim dialog As New OpenFileDialog

        dialog.Filter = "任务列表(*.XML)|*.XML"
        dialog.Title = "打开任务列表"
        If dialog.ShowDialog(winptr) = DialogResult.OK Then

            Dim doc As New XmlDocument()
            doc.Load(dialog.FileName)

            For Each node As XmlNode In doc.SelectNodes("TaskList/TaskItem")
                Dim category As String = node.SelectSingleNode("Category").InnerText
                Dim subcategory As String = node.SelectSingleNode("SubCategory").InnerText
                Dim description As String = node.SelectSingleNode("Description").InnerText

                DTE.ToolWindows.TaskList.TaskItems.Add(category, subcategory, description)
            Next

        End If
    End Sub
End Module

以上代码只是一个示范,还可以进一步细化。因为任务有好几种类型:用户任务,快捷方式(书签),注释(TODO)等等

 

导出的XML文件大致如下

image

最后,我可以把这两个宏添加到解决方案的快捷菜单中去

image

作者:陈希章
出处:http://blog.youkuaiyun.com/chen_xizhang
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值