代码改变世界

开源:VS自动化实现对aspx和ascx批量生成resx

  山不转水转...  阅读(1462)  评论(2编辑  收藏  举报

简介

这个是一个Visual Studio 2013的插件,安装后在VS的Tools菜单下生成一个AutoResx菜单项,点击后对项目里的每个aspx和ascx重新生成resx文件。

可以从VS的Tools->Extensions and Updates,在online里搜索AutoResx,或从【http://visualstudiogallery.msdn.microsoft.com/2721069a-104d-4153-b5e0-ab07f0e5ff1f】下载插件安装。为防止万一,使用前请备份你的代码。

源码地址:https://github.com/cuiliang/AutoResx

问题起源

如果一个Webform项目要做国际化,通常首先要做的操作为:在VS中打开每个aspx和ascx文件,切换到设计视图,点击Tools菜单下的Generate Local Resource菜单项。

如果项目里有比较多的aspx和ascx,这个工作做起来是很枯燥和费时的。

URTracker早先的版本做过国际化(支持简体/繁体和英文),但是后来因为犯懒的原因,再加上英文的版本需求很少,所以在增加功能和修改现有功能的时候,都直接在代码里写简体中文了。

现在忽然有客户需求英文版,这下可麻烦了。现有aspx和ascx加起来接近300个,要每个文件重新生成resx,然后才能使用Passolo继续做翻译生成其他语言的资源文件。

为了能节省时间,VS能不能自动做这个工作呢?

俺首先想到了能不能用“宏”,Google搜到了一些使用宏调用Tools.GenerateLocalResource的代码(http://forums.asp.net/t/1280608.aspx),结果后来发现VS2013不支持宏了,郁闷。

有没有其他方法呢?答案是有的,我们可以看到这VS的Tools菜单下,有Add-in Manager...,那么Add-in应该可以实现我们的需求。

继续google,发现Add-in也过时了,现在推荐的是开发Visual Studio Package项目... 好吧,只好这样了。

 

创建Visual Studio Package项目

首先要安装Visual Studio SDK

在VS2013中, 创建项目,选择“Visual Studio Package”项目类型。

 

输入项目名称等。。。进入Wizard。

Next

挑选一种语言,别的都忘了,选C#。

输入公司信息,包的描述说明。这些,要发布在visualstudiogallery时会显示。

 

包含什么功能? 我们是要在Tools菜单下增加一个菜单项,这里选“Menu Command”

选择菜单的标题和ID,再点Next,选择test project的选项。没时间把它们搞明白了,就不选了。

Wizard完成后,会生成整个项目。

找到(VSPackage name,Wizard第二页里选择的名字)Package.cs文件,我们的主要代码就放在这个文件里了。

private void MenuItemCallback(object sender, EventArgs e)
 

这个函数就是点击了我们放在Tools里的菜单后触发的事件。

 

生成resx的大概逻辑

基本的过程是这样的:

  1. 找到项目里所有的aspx和ascx文件
  2. 对每个文件进行处理
    1. 打开文件
    2. 进入设计视图
    3. 等待视图加载完
    4. 执行Tools->Generate Local Resource 命令
    5. 保存

详细就不解释了,见代码。

怎么发布到VisualStudioGallery

发布后,可以直接通过VS的扩展管理器下载和更新组件,会很方便。步骤:

发现bug欢迎反馈给我,谢谢!

 

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示