2
我想編寫一個宏來將選定的文本放到我的項目中的特定XML文件中。例如我的路徑是〜/ Pages/Dictionary/en.xml。我想將選定的文本從aspx.cs文件放到en.xml文件中。
請指導我從哪裏開始。我可以得到選定的文本。現在我不知道如何訪問文件內容轉到文件結尾(或文件中的另一個地方),並根據選定的文本插入一些文本。
如何編寫Visual Studio 2010宏用於訪問和編輯特定的項目文件?
我想編寫一個宏來將選定的文本放到我的項目中的特定XML文件中。例如我的路徑是〜/ Pages/Dictionary/en.xml。我想將選定的文本從aspx.cs文件放到en.xml文件中。
請指導我從哪裏開始。我可以得到選定的文本。現在我不知道如何訪問文件內容轉到文件結尾(或文件中的另一個地方),並根據選定的文本插入一些文本。
如何編寫Visual Studio 2010宏用於訪問和編輯特定的項目文件?
要打開文件,或者使用樹路徑在Solution Explorer或只是使用完整的文件路徑:
DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
DTE.ActiveWindow.Object.GetItem _
("{solutionname}\{projectname}\Pages\Dictionary\en.xml") _
.Select(vsUISelectionType.vsUISelectionTypeSelect)
DTE.ActiveWindow.Object.DoDefaultAction()
或
DTE.ItemOperations.OpenFile _
("{projectpath}\Pages\Dictionary\en.xml")
DTE.ActiveDocument.Activate()
你沒有提到這是否爲一個單一的項目和/或解決方案,所以我不知道是否硬編碼大括號中的項目就足夠了。
要插入在文件的最後文本,您可以選擇文檔的末尾,只貼上(例如,如果你使用的Selection.Copy()
),或者你可以創建一個編輯點和插入任何文字:
DTE.ActiveDocument.Selection.EndOfDocument()
DTE.ActiveDocument.Selection.Paste()
或
Dim editPoint As EnvDTE.EditPoint
selection = DTE.ActiveDocument.Selection()
editPoint = selection.TopPoint.CreateEditPoint()
editPoint.Insert("any text" + vbLf)
我不知道,如果該文件的末尾是你想要添加文本的真實位置;如果不是,則可以用例如StartOfLine()
,LineUp()
,WordRight()
或其他手段至control the code editor。
謝謝,但我不想激活或查看目標文件。我想動態地插入一些文本(例如一個XML節點作爲字符串到XML文件)並保存文件而不用查看,打開或激活它。有可能處理?! – mahdiahmadirad 2011-05-09 07:58:49
當然,雖然你沒有提到該文件不應該在編輯器中打開:只需在你的宏代碼中使用普通的'System.IO.File'或'System.IO.Stream'調用和操作進行編碼...... – mousio 2011-05-09 08:12:47