CodeSmith绿色化的情况下,又能使之正常工作
来源:互联网 发布:ubuntu如何卸载qq 编辑:程序博客网 时间:2024/04/30 23:07
最近,完成的工作中,需要使用CodeSmith生成代码。
我的思路是这样的:
1. 用户的参数,写入在CSP文件中。
2. 括展了CSP文件,因为这个文件是CodeSmith的项目文件,里面存着生成代码时的所有信息。而且是XML格式的,所以,可以对之进行扩展。
3. 然后,调用CodeSmith API,通过CSP来生成目标代码。我现在的的目标代码,是一个perl脚本程序的变量部分。
然而,在部署时,遇到一系列困难。
首先,因为我的Codesmith并不是正版的,所以在网上找了Codesmith.Engine的动态库。
而工作环境,需要绿色化。我一直没找到门道,一开始是装好CodeSmith后,然后把Crack的dll拷到这:C:\WINDOWS\assembly\GAC_MSIL\CodeSmith.Engine\5.0.0.0__9fd61cdb91609a7a
,over wirte 原有的。然后把这个目录只读。因为Codesmith启动时会检查。
这样,也实出了,程序和软件都可以使用。
但这种方式,经过反复尝试,证实,几乎无法部署到别的机器上去。
所以,我想到了彻底绿色化。
以过一番功夫,的确做到了。现在,我的CodeSmith在没有安装的机器上,也可以启动。
然而,新的问题出现了:如果目录更换,代码无法生成。
这里到了本文的重点。
========================================================================
1. 我的程序的代码如下:
ProjectCodeGenerator myGen = new ProjectCodeGenerator(); return myGen.GenerateCode(cspPath);
如果目录变更后,这段代码将无法执行。
2. 但我发现,手工启动CodeSmith后,并且在这个对话框里点是,就可以正确生成了:
3. 所以,我分析了注册表。
发现这里有不同:
已改变值 (10) 快照 A4. 这里我面临选择:是自己写代码来搞定注册表的关联信息的注入,还是利用CodeSmith的本身的功能来解决。
当然,Codesmith是首选,但他的手册里,很可能没用。
怎么办?
5. 用ILSpy_Debugger打开程序CodeSmthStudio
6. 在代码中搜索:
竟然找到了:
7. 剩下的就好办了:
改成这样就可以了:
if (!FileAssociationManager.IsAssociated)
{
FileAssociationManager.AddFileAssociation();
}
ProjectCodeGenerator myGen = new ProjectCodeGenerator();
return myGen.GenerateCode(cspPath);
~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CodeSmith绿色化的情况下,又能使之正常工作
- nagios能正常启动的情况下,发不出邮件
- 使zf在不支持rewrite功能下能正常工作的各种办法
- 修复jquery.cookie的bug,使其能在IE浏览器下正常工作
- 解决公司oracle数据库服务器,在不能上网的情况下数据库也能正常的在局域网中使用
- PHPWAMP强行脱离依赖,在系统缺失必备组件或DLL受损的情况下依然能正常运行
- 在网站流量唱衰的情况下 做好网站运营工作需要什么神技能?
- 在正常情况下
- 什么情况下需要使能AFIO的时钟呢?
- 不依赖于DLL就能正常工作的全局钩子
- 不依赖于DLL就能正常工作的全局钩子
- 不依赖于DLL就能正常工作的全局钩子
- XDebug又能正常使用了
- 我的EPSON790喷墨打印机又能工作了
- 【疑问】——WCF 在Service能正常访问的情况下,设一form中的button启动服务时,报错
- Android:正常情况下的Activity的生命周期
- Linux/MacOS下matplotlib能正常显示的中文字体选择
- 正常情况下的货币,财富及汇率
- 加到链建设者
- POI对Excel自定义日期格式的读取
- 【互动问答分享】第13期决胜云计算大数据时代Spark亚太研究院公益大讲堂
- javaee开发常用jar作用
- LinkedHashMap和HashMap的比较使用
- CodeSmith绿色化的情况下,又能使之正常工作
- 关于Python中的yield
- IO编程之输入流
- mysql (MySql Command Line Client) 保存数据后乱码
- 代码混淆
- 委托构造函数
- 深入理解java.lang.Runtime
- 9.png图片的处理
- Json转换报错java.lang.IllegalArgumentException的解决方案!