<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>IIrrelevant - ASP.NET</title>
    <link>http://www.milkcarton.com/blog/</link>
    <description>Irrelevant musings about software development</description>
    <language>en-us</language>
    <copyright>Dan Morphis</copyright>
    <lastBuildDate>Mon, 27 Aug 2007 04:56:04 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>blog@milkcarton.com</managingEditor>
    <webMaster>blog@milkcarton.com</webMaster>
    <item>
      <trackback:ping>http://www.milkcarton.com/blog/Trackback.aspx?guid=1e707a99-6d90-4d04-984d-988d378137b3</trackback:ping>
      <pingback:server>http://www.milkcarton.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.milkcarton.com/blog/PermaLink,guid,1e707a99-6d90-4d04-984d-988d378137b3.aspx</pingback:target>
      <dc:creator>Dan Morphis</dc:creator>
      <wfw:comment>http://www.milkcarton.com/blog/CommentView,guid,1e707a99-6d90-4d04-984d-988d378137b3.aspx</wfw:comment>
      <wfw:commentRss>http://www.milkcarton.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=1e707a99-6d90-4d04-984d-988d378137b3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I downloaded the very excellent Resource Refactoring Tool (<a title="http://www.codeplex.com/ResourceRefactoring" href="http://www.codeplex.com/ResourceRefactoring">http://www.codeplex.com/ResourceRefactoring</a>)
the other day.  It works great in code files, but I found that it didn't work
at all for ASPX/HTML pages.  Seeing this as a challenge, I decided to hack something
up in VBA to automatically extract the selected text, create a resx name for the text,
add it to the resource file, and insert the ASP.NET literal control.
</p>
        <h3>How to use it
</h3>
        <p>
This is split up into two different macro modules, one named Utilities, and the other
named what ever you want.  Then add them to your Visual Studio tool bar so you
have something convenient you can click on (Right click the tool bar, click Customize,
click Commands, then Macros under categories, find what you named the macro and then
drag it up to your tool bar.  You can either drag it to an existing tool strip,
or create your own.  Finally right click on the item while still in customize
mode and add an image).
</p>
        <p>
 
</p>
        <p>
Caller:
</p>
        <p>
        </p>
        <div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:1329ba2c-a1eb-4272-be95-d8be9e1e94a7" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <pre style="background-color:#FFFF80;">
            <div>
              <!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
              <span style="color: #0000FF; ">Imports</span>
              <span style="color: #000000; "> System </span>
              <span style="color: #0000FF; ">Imports</span>
              <span style="color: #000000; "> EnvDTE </span>
              <span style="color: #0000FF; ">Imports</span>
              <span style="color: #000000; "> EnvDTE80 </span>
              <span style="color: #0000FF; ">Imports</span>
              <span style="color: #000000; "> System.Diagnostics </span>
              <span style="color: #0000FF; ">Public</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Module</span>
              <span style="color: #000000; "> MoreMacros </span>
              <span style="color: #0000FF; ">Public</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Sub</span>
              <span style="color: #000000; "> AspTextLiteral() </span>
              <span style="color: #0000FF; ">Dim</span>
              <span style="color: #000000; "> resx </span>
              <span style="color: #0000FF; ">as</span>
              <span style="color: #000000; "> ProjectItem </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> DTE.ActiveWindow.Object.GetItem(</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">solution\project\folder\ResourceFile.resx</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">)
Utilities.AspTextLiteral(resx) </span>
              <span style="color: #0000FF; ">End Sub</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Public</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Sub</span>
              <span style="color: #000000; "> InQuoteLiteral()
DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate() </span>
              <span style="color: #0000FF; ">Dim</span>
              <span style="color: #000000; "> resx </span>
              <span style="color: #0000FF; ">as</span>
              <span style="color: #000000; "> ProjectItem </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> DTE.ActiveWindow.Object.GetItem(</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">solution\project\folder\ResourceFile.resx</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">)
Utilities.InQuoteLiteral(resx) </span>
              <span style="color: #0000FF; ">End Sub</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">End
Module</span>
              <span style="color: #000000; ">
              </span>
            </div>
          </pre>
        </div>
        <p>
Utilities: 
</p>
        <div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:7d5c45be-dc14-4893-a3ac-dcbe121d224d" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <pre style="background-color:#FFFF80;">
            <div>
              <!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
              <span style="color: #0000FF; ">Imports</span>
              <span style="color: #000000; "> System </span>
              <span style="color: #0000FF; ">Imports</span>
              <span style="color: #000000; "> EnvDTE </span>
              <span style="color: #0000FF; ">Imports</span>
              <span style="color: #000000; "> EnvDTE80 </span>
              <span style="color: #0000FF; ">Imports</span>
              <span style="color: #000000; "> System.Diagnostics </span>
              <span style="color: #0000FF; ">Imports</span>
              <span style="color: #000000; "> System.Xml </span>
              <span style="color: #0000FF; ">Public</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Module</span>
              <span style="color: #000000; "> Utilities </span>
              <span style="color: #0000FF; ">Public</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Sub</span>
              <span style="color: #000000; "> AspTextLiteral(</span>
              <span style="color: #0000FF; ">ByRef</span>
              <span style="color: #000000; "> resourceFile </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> ProjectItem) </span>
              <span style="color: #0000FF; ">Const</span>
              <span style="color: #000000; "> literalFormat </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">&lt;asp:Literal
runat=""server"" Text=""&lt;%$ Resources:{0},{1}%&gt;""
/&gt;</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Const</span>
              <span style="color: #000000; "> inQuotesFormat </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">&lt;%$
Resources:{0},{1}%&gt;</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; "> LiteralReplacer(resourceFile,
literalFormat, </span>
              <span style="color: #000000; ">4</span>
              <span style="color: #000000; ">) </span>
              <span style="color: #0000FF; ">End
Sub</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Public</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Sub</span>
              <span style="color: #000000; "> InQuoteLiteral(</span>
              <span style="color: #0000FF; ">ByRef</span>
              <span style="color: #000000; "> resourceFile </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> ProjectItem) </span>
              <span style="color: #0000FF; ">Const</span>
              <span style="color: #000000; "> inQuotesFormat </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">&lt;%$
Resources:{0},{1}%&gt;</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; "> LiteralReplacer(resourceFile,
inQuotesFormat, </span>
              <span style="color: #000000; ">3</span>
              <span style="color: #000000; ">) </span>
              <span style="color: #0000FF; ">End
Sub</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Private</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Sub</span>
              <span style="color: #000000; "> LiteralReplacer(</span>
              <span style="color: #0000FF; ">ByRef</span>
              <span style="color: #000000; "> resourceFile </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> ProjectItem, </span>
              <span style="color: #0000FF; ">ByVal</span>
              <span style="color: #000000; "> template </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">, </span>
              <span style="color: #0000FF; ">ByVal</span>
              <span style="color: #000000; "> delete </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> Int16) </span>
              <span style="color: #0000FF; ">Dim</span>
              <span style="color: #000000; "> ts </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> TextSelection </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> DTE.ActiveDocument.Selection </span>
              <span style="color: #0000FF; ">Dim</span>
              <span style="color: #000000; "> name </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> StripNonAllowedChars(ts.Text).Trim.ToLower </span>
              <span style="color: #0000FF; ">Dim</span>
              <span style="color: #000000; "> value </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> ts.Text </span>
              <span style="color: #0000FF; ">Dim</span>
              <span style="color: #000000; "> path </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> resourceFile.Properties.Item(</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">LocalPath</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">).Value </span>
              <span style="color: #0000FF; ">Dim</span>
              <span style="color: #000000; "> resName </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> System.IO.Path.GetFileNameWithoutExtension(resourceFile.Name)
name </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> AddResourceEntry(path,
name, value) ts.Text </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">.Format(template,
resName, name) DTE.ActiveDocument.Selection.Delete(delete) </span>
              <span style="color: #0000FF; ">End
Sub</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #008000; ">'</span>
              <span style="color: #008000; ">Returns
the value of the name used</span>
              <span style="color: #008000; ">
              </span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Public</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Function</span>
              <span style="color: #000000; "> AddResourceEntry(</span>
              <span style="color: #0000FF; ">ByRef</span>
              <span style="color: #000000; "> resourceFilePath </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">, </span>
              <span style="color: #0000FF; ">ByVal</span>
              <span style="color: #000000; "> name </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">, </span>
              <span style="color: #0000FF; ">ByVal</span>
              <span style="color: #000000; "> value </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">) </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Dim</span>
              <span style="color: #000000; "> doc </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> XmlDocument </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">New</span>
              <span style="color: #000000; "> XmlDocument
doc.Load(resourceFilePath) </span>
              <span style="color: #008000; ">'</span>
              <span style="color: #008000; ">See
if it exists first</span>
              <span style="color: #008000; ">
              </span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Dim</span>
              <span style="color: #000000; "> root </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> XmlElement </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> doc.DocumentElement </span>
              <span style="color: #0000FF; ">Dim</span>
              <span style="color: #000000; "> e </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> XmlElement </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> root.SelectSingleNode(</span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">.Format(</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">data[@name=""{0}""]</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">,
name)) </span>
              <span style="color: #0000FF; ">If</span>
              <span style="color: #000000; "> e </span>
              <span style="color: #0000FF; ">Is</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Nothing</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Then</span>
              <span style="color: #000000; "> name </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> CreateUniqueName(root,
name) </span>
              <span style="color: #0000FF; ">Dim</span>
              <span style="color: #000000; "> elem </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> XmlElement </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> CreateResourceFileElement(doc,
name, value) root.AppendChild(elem) </span>
              <span style="color: #0000FF; ">Else</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">If</span>
              <span style="color: #000000; "> e.SelectSingleNode(</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">value</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">).InnerText.ToLower </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> value.ToLower </span>
              <span style="color: #0000FF; ">Then</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Return</span>
              <span style="color: #000000; "> name </span>
              <span style="color: #0000FF; ">Else</span>
              <span style="color: #000000; "> name </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> CreateUniqueName(root,
name) </span>
              <span style="color: #0000FF; ">Dim</span>
              <span style="color: #000000; "> elem </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> XmlElement </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> CreateResourceFileElement(doc,
name, value) root.AppendChild(elem) </span>
              <span style="color: #0000FF; ">End</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">If</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">End</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">If</span>
              <span style="color: #000000; "> doc.Save(resourceFilePath) </span>
              <span style="color: #0000FF; ">Return</span>
              <span style="color: #000000; "> name </span>
              <span style="color: #0000FF; ">End
Function</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Private</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Function</span>
              <span style="color: #000000; "> CreateUniqueName(</span>
              <span style="color: #0000FF; ">ByRef</span>
              <span style="color: #000000; "> root </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> XmlElement, </span>
              <span style="color: #0000FF; ">ByVal</span>
              <span style="color: #000000; "> name </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">) </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">If</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">IsNumeric</span>
              <span style="color: #000000; ">(name.Substring(</span>
              <span style="color: #000000; ">0</span>
              <span style="color: #000000; ">, </span>
              <span style="color: #000000; ">1</span>
              <span style="color: #000000; ">)) </span>
              <span style="color: #0000FF; ">Then</span>
              <span style="color: #000000; "> name </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">n</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #000000; ">&amp;</span>
              <span style="color: #000000; "> name </span>
              <span style="color: #0000FF; ">End</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">If</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #008000; ">'</span>
              <span style="color: #008000; ">Name
doesn't exist, use it</span>
              <span style="color: #008000; ">
              </span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">If</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Not</span>
              <span style="color: #000000; "> CheckNameExists(root,
name) </span>
              <span style="color: #0000FF; ">Then</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Return</span>
              <span style="color: #000000; "> name </span>
              <span style="color: #0000FF; ">End</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">If</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Dim</span>
              <span style="color: #000000; "> result </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #008000; ">'</span>
              <span style="color: #008000; ">Build
a unique name</span>
              <span style="color: #008000; ">
              </span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">For</span>
              <span style="color: #000000; "> I </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> Int16 </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #000000; ">1</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">To</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #000000; ">100</span>
              <span style="color: #000000; "> result </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> name </span>
              <span style="color: #000000; ">&amp;</span>
              <span style="color: #000000; "> I </span>
              <span style="color: #0000FF; ">If</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Not</span>
              <span style="color: #000000; "> CheckNameExists(root,
result) </span>
              <span style="color: #0000FF; ">Then</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Return</span>
              <span style="color: #000000; "> result </span>
              <span style="color: #0000FF; ">End</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">If</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Next</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Return</span>
              <span style="color: #000000; "> name </span>
              <span style="color: #000000; ">&amp;</span>
              <span style="color: #000000; "> Guid.NewGuid.ToString </span>
              <span style="color: #0000FF; ">End
Function</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Private</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Function</span>
              <span style="color: #000000; "> CheckNameExists(</span>
              <span style="color: #0000FF; ">ByRef</span>
              <span style="color: #000000; "> root </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> XmlElement, </span>
              <span style="color: #0000FF; ">ByVal</span>
              <span style="color: #000000; "> name </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">) </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Boolean</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Dim</span>
              <span style="color: #000000; "> e </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> XmlElement </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> root.SelectSingleNode(</span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">.Format(</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">data[@name=""{0}""]</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">,
name)) </span>
              <span style="color: #0000FF; ">Return</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Not</span>
              <span style="color: #000000; "> (e </span>
              <span style="color: #0000FF; ">Is</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Nothing</span>
              <span style="color: #000000; ">) </span>
              <span style="color: #0000FF; ">End
Function</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Private</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Function</span>
              <span style="color: #000000; "> CreateResourceFileElement(</span>
              <span style="color: #0000FF; ">ByRef</span>
              <span style="color: #000000; "> doc </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> XmlDocument, </span>
              <span style="color: #0000FF; ">ByVal</span>
              <span style="color: #000000; "> name </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">, </span>
              <span style="color: #0000FF; ">ByVal</span>
              <span style="color: #000000; "> value </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">) </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> XmlElement </span>
              <span style="color: #0000FF; ">Dim</span>
              <span style="color: #000000; "> result </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> XmlElement </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> doc.CreateElement(</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">data</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">)
SetAttribute(result, </span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">name</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">,
name) SetAttribute(result, </span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">xml:space</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">, </span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">preserve</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">) </span>
              <span style="color: #0000FF; ">Dim</span>
              <span style="color: #000000; "> valueElem </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> XmlElement </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> doc.CreateElement(</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">value</span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">)
valueElem.InnerText </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> value
result.AppendChild(valueElem) </span>
              <span style="color: #0000FF; ">Return</span>
              <span style="color: #000000; "> result </span>
              <span style="color: #0000FF; ">End
Function</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Private</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Function</span>
              <span style="color: #000000; "> SetAttribute(</span>
              <span style="color: #0000FF; ">ByRef</span>
              <span style="color: #000000; "> element </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> XmlElement, </span>
              <span style="color: #0000FF; ">ByVal</span>
              <span style="color: #000000; "> attr </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">, </span>
              <span style="color: #0000FF; ">ByVal</span>
              <span style="color: #000000; "> value </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">) </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> XmlElement </span>
              <span style="color: #0000FF; ">If</span>
              <span style="color: #000000; "> element.Attributes.GetNamedItem(attr) </span>
              <span style="color: #0000FF; ">Is</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Nothing</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Then</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Dim</span>
              <span style="color: #000000; "> attrib </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; "> XmlAttribute </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> element.OwnerDocument.CreateAttribute(attr)
attrib.Value </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> value
element.Attributes.Append(attrib) </span>
              <span style="color: #0000FF; ">Else</span>
              <span style="color: #000000; "> element.Attributes.Item(attr).Value </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> value </span>
              <span style="color: #0000FF; ">End</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">If</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Return</span>
              <span style="color: #000000; "> element </span>
              <span style="color: #0000FF; ">End
Function</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Private</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Function</span>
              <span style="color: #000000; "> StripNonAllowedChars(</span>
              <span style="color: #0000FF; ">ByVal</span>
              <span style="color: #000000; "> text </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">) </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">String</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Const</span>
              <span style="color: #000000; "> non_allowed </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">""';:,&lt;.&gt;/?\|`~!@#$%^&amp;*()-=+[{]} </span>
              <span style="color: #000000; ">"</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">For</span>
              <span style="color: #000000; "> I </span>
              <span style="color: #0000FF; ">As</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Integer</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #000000; ">0</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">To</span>
              <span style="color: #000000; "> non_allowed.Length </span>
              <span style="color: #000000; ">-</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #000000; ">1</span>
              <span style="color: #000000; "> text </span>
              <span style="color: #000000; ">=</span>
              <span style="color: #000000; "> text.Replace(non_allowed(I).ToString, </span>
              <span style="color: #000000; ">""</span>
              <span style="color: #000000; ">) </span>
              <span style="color: #0000FF; ">Next</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">Return</span>
              <span style="color: #000000; "> text </span>
              <span style="color: #0000FF; ">End
Function</span>
              <span style="color: #000000; ">
              </span>
              <span style="color: #0000FF; ">End
Module</span>
              <span style="color: #000000; ">
              </span>
            </div>
          </pre>
        </div>
        <p>
 
</p>
        <div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:6c21f677-e872-405e-8840-6e23bfe78fbd" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">del.icio.us
Tags: <a href="http://del.icio.us/popular/VisualStudio" rel="tag">VisualStudio</a>, <a href="http://del.icio.us/popular/.NET" rel="tag">.NET</a>, <a href="http://del.icio.us/popular/Macros" rel="tag">Macros</a>, <a href="http://del.icio.us/popular/ASP.NET" rel="tag">ASP.NET</a></div>
        <img width="0" height="0" src="http://www.milkcarton.com/blog/aggbug.ashx?id=1e707a99-6d90-4d04-984d-988d378137b3" />
      </body>
      <title>ASP.NET Resource Refactoring</title>
      <guid isPermaLink="false">http://www.milkcarton.com/blog/PermaLink,guid,1e707a99-6d90-4d04-984d-988d378137b3.aspx</guid>
      <link>http://www.milkcarton.com/blog/2007/08/27/ASPNET+Resource+Refactoring.aspx</link>
      <pubDate>Mon, 27 Aug 2007 04:56:04 GMT</pubDate>
      <description>&lt;p&gt;
I&amp;nbsp;downloaded the very excellent Resource Refactoring Tool (&lt;a title="http://www.codeplex.com/ResourceRefactoring" href="http://www.codeplex.com/ResourceRefactoring"&gt;http://www.codeplex.com/ResourceRefactoring&lt;/a&gt;)
the other day.&amp;nbsp; It works great in code files, but I found that it didn't work
at all for ASPX/HTML pages.&amp;nbsp; Seeing this as a challenge, I decided to hack something
up in VBA to automatically extract the selected text, create a resx name for the text,
add it to the resource file, and insert the ASP.NET literal control.
&lt;/p&gt;
&lt;h3&gt;How to use it
&lt;/h3&gt;
&lt;p&gt;
This is split up into two different macro modules, one named Utilities, and the other
named what ever you want.&amp;nbsp; Then add them to your Visual Studio tool bar so you
have something convenient you can click on (Right click the tool bar, click Customize,
click Commands, then Macros under categories, find what you named the macro and then
drag it up to your tool bar.&amp;nbsp; You can either drag it to an existing tool strip,
or create your own.&amp;nbsp; Finally right click on the item while still in customize
mode and add an image).
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Caller:
&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:1329ba2c-a1eb-4272-be95-d8be9e1e94a7" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:#FFFF80;"&gt;
&lt;div&gt;
&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF; "&gt;Imports&lt;/span&gt;&lt;span style="color: #000000; "&gt; System &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Imports&lt;/span&gt;&lt;span style="color: #000000; "&gt; EnvDTE &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Imports&lt;/span&gt;&lt;span style="color: #000000; "&gt; EnvDTE80 &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Imports&lt;/span&gt;&lt;span style="color: #000000; "&gt; System.Diagnostics &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Module&lt;/span&gt;&lt;span style="color: #000000; "&gt; MoreMacros &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Sub&lt;/span&gt;&lt;span style="color: #000000; "&gt; AspTextLiteral() &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Dim&lt;/span&gt;&lt;span style="color: #000000; "&gt; resx &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;as&lt;/span&gt;&lt;span style="color: #000000; "&gt; ProjectItem &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; DTE.ActiveWindow.Object.GetItem(&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;solution\project\folder\ResourceFile.resx&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;)
Utilities.AspTextLiteral(resx) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;End Sub&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Sub&lt;/span&gt;&lt;span style="color: #000000; "&gt; InQuoteLiteral()
DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate() &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Dim&lt;/span&gt;&lt;span style="color: #000000; "&gt; resx &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;as&lt;/span&gt;&lt;span style="color: #000000; "&gt; ProjectItem &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; DTE.ActiveWindow.Object.GetItem(&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;solution\project\folder\ResourceFile.resx&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;)
Utilities.InQuoteLiteral(resx) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;End Sub&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;End
Module&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&gt;
&lt;p&gt;
Utilities: 
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:7d5c45be-dc14-4893-a3ac-dcbe121d224d" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:#FFFF80;"&gt;
&lt;div&gt;
&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF; "&gt;Imports&lt;/span&gt;&lt;span style="color: #000000; "&gt; System &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Imports&lt;/span&gt;&lt;span style="color: #000000; "&gt; EnvDTE &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Imports&lt;/span&gt;&lt;span style="color: #000000; "&gt; EnvDTE80 &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Imports&lt;/span&gt;&lt;span style="color: #000000; "&gt; System.Diagnostics &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Imports&lt;/span&gt;&lt;span style="color: #000000; "&gt; System.Xml &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Module&lt;/span&gt;&lt;span style="color: #000000; "&gt; Utilities &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Sub&lt;/span&gt;&lt;span style="color: #000000; "&gt; AspTextLiteral(&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;ByRef&lt;/span&gt;&lt;span style="color: #000000; "&gt; resourceFile &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; ProjectItem) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Const&lt;/span&gt;&lt;span style="color: #000000; "&gt; literalFormat &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;lt;asp:Literal
runat=&amp;quot;&amp;quot;server&amp;quot;&amp;quot; Text=&amp;quot;&amp;quot;&amp;lt;%$ Resources:{0},{1}%&amp;gt;&amp;quot;&amp;quot;
/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Const&lt;/span&gt;&lt;span style="color: #000000; "&gt; inQuotesFormat &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;lt;%$
Resources:{0},{1}%&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt; LiteralReplacer(resourceFile,
literalFormat, &lt;/span&gt;&lt;span style="color: #000000; "&gt;4&lt;/span&gt;&lt;span style="color: #000000; "&gt;) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;End
Sub&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Sub&lt;/span&gt;&lt;span style="color: #000000; "&gt; InQuoteLiteral(&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;ByRef&lt;/span&gt;&lt;span style="color: #000000; "&gt; resourceFile &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; ProjectItem) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Const&lt;/span&gt;&lt;span style="color: #000000; "&gt; inQuotesFormat &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;lt;%$
Resources:{0},{1}%&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt; LiteralReplacer(resourceFile,
inQuotesFormat, &lt;/span&gt;&lt;span style="color: #000000; "&gt;3&lt;/span&gt;&lt;span style="color: #000000; "&gt;) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;End
Sub&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Private&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Sub&lt;/span&gt;&lt;span style="color: #000000; "&gt; LiteralReplacer(&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;ByRef&lt;/span&gt;&lt;span style="color: #000000; "&gt; resourceFile &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; ProjectItem, &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;ByVal&lt;/span&gt;&lt;span style="color: #000000; "&gt; template &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt;, &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;ByVal&lt;/span&gt;&lt;span style="color: #000000; "&gt; delete &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; Int16) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Dim&lt;/span&gt;&lt;span style="color: #000000; "&gt; ts &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; TextSelection &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; DTE.ActiveDocument.Selection &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Dim&lt;/span&gt;&lt;span style="color: #000000; "&gt; name &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; StripNonAllowedChars(ts.Text).Trim.ToLower &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Dim&lt;/span&gt;&lt;span style="color: #000000; "&gt; value &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; ts.Text &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Dim&lt;/span&gt;&lt;span style="color: #000000; "&gt; path &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; resourceFile.Properties.Item(&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;LocalPath&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;).Value &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Dim&lt;/span&gt;&lt;span style="color: #000000; "&gt; resName &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; System.IO.Path.GetFileNameWithoutExtension(resourceFile.Name)
name &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; AddResourceEntry(path,
name, value) ts.Text &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt;.Format(template,
resName, name) DTE.ActiveDocument.Selection.Delete(delete) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;End
Sub&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #008000; "&gt;'&lt;/span&gt;&lt;span style="color: #008000; "&gt;Returns
the value of the name used&lt;/span&gt;&lt;span style="color: #008000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Function&lt;/span&gt;&lt;span style="color: #000000; "&gt; AddResourceEntry(&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;ByRef&lt;/span&gt;&lt;span style="color: #000000; "&gt; resourceFilePath &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt;, &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;ByVal&lt;/span&gt;&lt;span style="color: #000000; "&gt; name &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt;, &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;ByVal&lt;/span&gt;&lt;span style="color: #000000; "&gt; value &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt;) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Dim&lt;/span&gt;&lt;span style="color: #000000; "&gt; doc &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; XmlDocument &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;New&lt;/span&gt;&lt;span style="color: #000000; "&gt; XmlDocument
doc.Load(resourceFilePath) &lt;/span&gt;&lt;span style="color: #008000; "&gt;'&lt;/span&gt;&lt;span style="color: #008000; "&gt;See
if it exists first&lt;/span&gt;&lt;span style="color: #008000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Dim&lt;/span&gt;&lt;span style="color: #000000; "&gt; root &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; XmlElement &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; doc.DocumentElement &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Dim&lt;/span&gt;&lt;span style="color: #000000; "&gt; e &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; XmlElement &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; root.SelectSingleNode(&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt;.Format(&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;data[@name=&amp;quot;&amp;quot;{0}&amp;quot;&amp;quot;]&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;,
name)) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;If&lt;/span&gt;&lt;span style="color: #000000; "&gt; e &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Is&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Nothing&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Then&lt;/span&gt;&lt;span style="color: #000000; "&gt; name &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; CreateUniqueName(root,
name) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Dim&lt;/span&gt;&lt;span style="color: #000000; "&gt; elem &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; XmlElement &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; CreateResourceFileElement(doc,
name, value) root.AppendChild(elem) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Else&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;If&lt;/span&gt;&lt;span style="color: #000000; "&gt; e.SelectSingleNode(&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;value&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;).InnerText.ToLower &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; value.ToLower &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Then&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Return&lt;/span&gt;&lt;span style="color: #000000; "&gt; name &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Else&lt;/span&gt;&lt;span style="color: #000000; "&gt; name &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; CreateUniqueName(root,
name) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Dim&lt;/span&gt;&lt;span style="color: #000000; "&gt; elem &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; XmlElement &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; CreateResourceFileElement(doc,
name, value) root.AppendChild(elem) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;End&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;If&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;End&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;If&lt;/span&gt;&lt;span style="color: #000000; "&gt; doc.Save(resourceFilePath) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Return&lt;/span&gt;&lt;span style="color: #000000; "&gt; name &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;End
Function&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Private&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Function&lt;/span&gt;&lt;span style="color: #000000; "&gt; CreateUniqueName(&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;ByRef&lt;/span&gt;&lt;span style="color: #000000; "&gt; root &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; XmlElement, &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;ByVal&lt;/span&gt;&lt;span style="color: #000000; "&gt; name &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt;) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;If&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;IsNumeric&lt;/span&gt;&lt;span style="color: #000000; "&gt;(name.Substring(&lt;/span&gt;&lt;span style="color: #000000; "&gt;0&lt;/span&gt;&lt;span style="color: #000000; "&gt;, &lt;/span&gt;&lt;span style="color: #000000; "&gt;1&lt;/span&gt;&lt;span style="color: #000000; "&gt;)) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Then&lt;/span&gt;&lt;span style="color: #000000; "&gt; name &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;n&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000; "&gt; name &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;End&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;If&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #008000; "&gt;'&lt;/span&gt;&lt;span style="color: #008000; "&gt;Name
doesn't exist, use it&lt;/span&gt;&lt;span style="color: #008000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;If&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Not&lt;/span&gt;&lt;span style="color: #000000; "&gt; CheckNameExists(root,
name) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Then&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Return&lt;/span&gt;&lt;span style="color: #000000; "&gt; name &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;End&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;If&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Dim&lt;/span&gt;&lt;span style="color: #000000; "&gt; result &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #008000; "&gt;'&lt;/span&gt;&lt;span style="color: #008000; "&gt;Build
a unique name&lt;/span&gt;&lt;span style="color: #008000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;For&lt;/span&gt;&lt;span style="color: #000000; "&gt; I &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; Int16 &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;1&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;To&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;100&lt;/span&gt;&lt;span style="color: #000000; "&gt; result &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; name &lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000; "&gt; I &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;If&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Not&lt;/span&gt;&lt;span style="color: #000000; "&gt; CheckNameExists(root,
result) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Then&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Return&lt;/span&gt;&lt;span style="color: #000000; "&gt; result &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;End&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;If&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Next&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Return&lt;/span&gt;&lt;span style="color: #000000; "&gt; name &lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000; "&gt; Guid.NewGuid.ToString &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;End
Function&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Private&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Function&lt;/span&gt;&lt;span style="color: #000000; "&gt; CheckNameExists(&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;ByRef&lt;/span&gt;&lt;span style="color: #000000; "&gt; root &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; XmlElement, &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;ByVal&lt;/span&gt;&lt;span style="color: #000000; "&gt; name &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt;) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Boolean&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Dim&lt;/span&gt;&lt;span style="color: #000000; "&gt; e &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; XmlElement &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; root.SelectSingleNode(&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt;.Format(&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;data[@name=&amp;quot;&amp;quot;{0}&amp;quot;&amp;quot;]&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;,
name)) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Return&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Not&lt;/span&gt;&lt;span style="color: #000000; "&gt; (e &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Is&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Nothing&lt;/span&gt;&lt;span style="color: #000000; "&gt;) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;End
Function&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Private&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Function&lt;/span&gt;&lt;span style="color: #000000; "&gt; CreateResourceFileElement(&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;ByRef&lt;/span&gt;&lt;span style="color: #000000; "&gt; doc &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; XmlDocument, &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;ByVal&lt;/span&gt;&lt;span style="color: #000000; "&gt; name &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt;, &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;ByVal&lt;/span&gt;&lt;span style="color: #000000; "&gt; value &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt;) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; XmlElement &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Dim&lt;/span&gt;&lt;span style="color: #000000; "&gt; result &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; XmlElement &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; doc.CreateElement(&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;data&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;)
SetAttribute(result, &lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;name&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;,
name) SetAttribute(result, &lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;xml:space&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;, &lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;preserve&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Dim&lt;/span&gt;&lt;span style="color: #000000; "&gt; valueElem &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; XmlElement &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; doc.CreateElement(&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;value&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;)
valueElem.InnerText &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; value
result.AppendChild(valueElem) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Return&lt;/span&gt;&lt;span style="color: #000000; "&gt; result &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;End
Function&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Private&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Function&lt;/span&gt;&lt;span style="color: #000000; "&gt; SetAttribute(&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;ByRef&lt;/span&gt;&lt;span style="color: #000000; "&gt; element &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; XmlElement, &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;ByVal&lt;/span&gt;&lt;span style="color: #000000; "&gt; attr &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt;, &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;ByVal&lt;/span&gt;&lt;span style="color: #000000; "&gt; value &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt;) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; XmlElement &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;If&lt;/span&gt;&lt;span style="color: #000000; "&gt; element.Attributes.GetNamedItem(attr) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Is&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Nothing&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Then&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Dim&lt;/span&gt;&lt;span style="color: #000000; "&gt; attrib &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; XmlAttribute &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; element.OwnerDocument.CreateAttribute(attr)
attrib.Value &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; value
element.Attributes.Append(attrib) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Else&lt;/span&gt;&lt;span style="color: #000000; "&gt; element.Attributes.Item(attr).Value &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; value &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;End&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;If&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Return&lt;/span&gt;&lt;span style="color: #000000; "&gt; element &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;End
Function&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Private&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Function&lt;/span&gt;&lt;span style="color: #000000; "&gt; StripNonAllowedChars(&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;ByVal&lt;/span&gt;&lt;span style="color: #000000; "&gt; text &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt;) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;String&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Const&lt;/span&gt;&lt;span style="color: #000000; "&gt; non_allowed &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&amp;quot;';:,&amp;lt;.&amp;gt;/?\|`~!@#$%^&amp;amp;*()-=+[{]} &lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;For&lt;/span&gt;&lt;span style="color: #000000; "&gt; I &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;As&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Integer&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;0&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;To&lt;/span&gt;&lt;span style="color: #000000; "&gt; non_allowed.Length &lt;/span&gt;&lt;span style="color: #000000; "&gt;-&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;1&lt;/span&gt;&lt;span style="color: #000000; "&gt; text &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; text.Replace(non_allowed(I).ToString, &lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;) &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Next&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;Return&lt;/span&gt;&lt;span style="color: #000000; "&gt; text &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;End
Function&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;End
Module&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:6c21f677-e872-405e-8840-6e23bfe78fbd" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;del.icio.us
Tags: &lt;a href="http://del.icio.us/popular/VisualStudio" rel="tag"&gt;VisualStudio&lt;/a&gt;, &lt;a href="http://del.icio.us/popular/.NET" rel="tag"&gt;.NET&lt;/a&gt;, &lt;a href="http://del.icio.us/popular/Macros" rel="tag"&gt;Macros&lt;/a&gt;, &lt;a href="http://del.icio.us/popular/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.milkcarton.com/blog/aggbug.ashx?id=1e707a99-6d90-4d04-984d-988d378137b3" /&gt;</description>
      <comments>http://www.milkcarton.com/blog/CommentView,guid,1e707a99-6d90-4d04-984d-988d378137b3.aspx</comments>
      <category>.NET</category>
      <category>ASP.NET</category>
      <category>Macros</category>
      <category>VisualStudio</category>
    </item>
  </channel>
</rss>