1 var dte = this.ServiceProvider.GetService(typeof(DTE)) as DTE; (selection == null) 4 { 5 return; s+ DateTime.Now.ToString(); 9 selection.Insert(versionstr, (int)vsInsertFlags.vsInsertFlagsCollapseToEnd);//重新写入文档
效果如下:
但是问题来了:
A、光标一定要定位到文件名后面,这完全是在制造麻烦么?
B、我要同时给几个js添加版本号怎么办?一个个添加?这还是在制造麻烦么?
C、我要同时给js和css添加版本号又怎么办呢?
...
带着这些疑问,我开始了新的起航。
小菜最终版
在解决第一版提出的问题,首先我们得解析我们选中的内容,随便百度一下,我就发现了 HtmlAgilityPack,后面的工作就简单了,便利选中 script和link 标签,获取 href,src 属性,加个?v=yyyyMMddss 就OK了。
这个版本,我们可以直接多个标签批量设置版本号了,操作就更方便了。使用方便了,同事自然就想用了,都不用我去要求了。
直接上代码吧,大家一看就了然了,没有注释哈,代码就是最好的注释了。
1 var dte = this.ServiceProvider.GetService(typeof(DTE)) as DTE; (selection == null) 4 { 5 return; 6 } 7 8 HtmlDocument doc = new HtmlDocument(); 9 doc.LoadHtml(selection.Text); ); ); newcontent = ""; + DateTime.Now.ToString(); (link != null) 18 { 19 foreach (HtmlNode categoryNode in link) 20 { ].Value; ) > 0) 23 { )); 25 } 26 href += versionstr; + href + ; 28 } 29 } (script != null) 33 { 34 foreach (HtmlNode categoryNode in script) 35 { ].Value; ) > 0) 38 { )); 40 } 41 src += versionstr; + src + ; 43 } 44 45 } (newcontent.Length == 0) 48 { 49 newcontent = versionstr; 50 }
再上几张最后的效果图,有图有真像,后面还有代码哦(至于最后用HJ这个图标,就是为了给媳妇邀功 \\*^o^*// )。
(选择一行)