众所周知,在VS(Visual Studio)里面可以利用post build 进行一些类似于CMD或者批处理的操作。 最近的项目中用到了MicroSoft的SignTool工具,目的是要把一个数字签名签到一个.XAP(SilverLight编译后的文件)文件上。

背景: 由于数字签名将要过期,需要用新的签名替换之前的。信签名是从总公司的IT部门申请来的(xxx.pfx)文件,密码也是他们提供的。由于IT部门有密码保护的要求,密码要满足所谓的安全规则,IT部门同事将密码设置为带有“特殊字符” 的一个字符串 "_X%v?XXX^XX2" (X表示字母,在这里处于安全考虑,不方便把密码直接放出来:)),因而运行在post build 命令时会报错: Missing file ...

"$(ProjectDir)signtool" sign /f "$(ProjectDir)mysign.pfx" /p _X%v?XXX^XX2 "$(TargetDir)ClientApplication.xap"

解决方案: 查了下批处理的特殊字符,发现需要用使用%或者^来处理特殊字符(例如,在特殊字符%前面加上一个%来正确输出%),并且需要将含有特殊字符的字符串用""括起来。 修改后的post build命令如下:

"$(ProjectDir)signtool" sign /f "$(ProjectDir)mysign.pfx" /p "_X%%v?XXX^XX2" "$(TargetDir)ClientApplication.xap"

使用修改后的post build 命令再次编译,结果正确。。。  good job!!

另外附上一个关于处理批处理特殊字符的链接,希望有所帮助:http://www.hackbase.com/tech/2009-09-27/56481.html

VS 2012: Post build 中使用 Signtool.exe,对于特殊password中字符的处理方法的更多相关文章

  1. Java中出现“错误: 编码GBK的不可映射字符”的解决方法

    我的java文件里出现中文,是这样一个文件: import java.io.*; public class Test { public static void main(String[] args) ...

  2. Excel中将字符串中从右起第n个指定字符替换的方法

    比如你想把www.baidu.com.cn中的倒数第二个”.”替换成@,则可以用: =SUBSTITUTE(A1,".","@",LEN(A1)-LEN(SUB ...

  3. AutoCAD.NET 不使用P/Invoke方式调用acad.exe或accore.dll中的接口(如acedCommand、acedPostCommand等)

    使用C#进行AutoCAD二次开发,有时候由于C#接口不够完善,或者低版本AutoCAD中的接口缺少,有些工作不能直接通过C#接口来实现,所以需要通过P/Invoke的方式调用AutoCAD的其他DL ...

  4. SignTool.exe(签名工具)

    水漂收集 -- SignTool.exe(签名工具) =============C#.Net 篇目录============== 签名工具是一个命令行工具,用于用证书对文件进行数字签名,验证文件和时间 ...

  5. signtool.exe not found

    When check the [sign the Xap File] checkbox, build project failed due to signtool.exe not found. Fol ...

  6. 如何在Exe和BPL插件中实现公共变量共享及窗口溶入技术Demo源码

    如何在Exe和BPL插件中实现公共变量共享及窗口溶入技术Demo源码 1.Delphi编译方式介绍: 当我们在开发一个常规应用程序时,Delphi可以让我们用两种方式使用VCL,一种是把VCL中的申明 ...

  7. Qt界面中嵌入其他exe程序的界面,使用Qt5

    下面用一个小例子来演示如何在Qt的界面中嵌入其他exe程序的界面,最终效果如下图所示.本文参考了 http://blog.csdn.net/jiaoyaziyang/article/details/4 ...

  8. Delphi中如何将 Exe 程序或其他资料打包在内,使用时再释放使用(转)

    1.生成一个rc文件,文件格式如下: rname exefile "test.exe" //rname是资源名称 //exefile是资源类型 //text.exe是资源 资源类型 ...

  9. Notepad++中调用cl.exe编译器(Windows)

    Notepad++中调用cl.exe编译器(Windows) 近来在notepad++中写代码,写完后总是习惯性的想去VS里面编译一下,看看代码是否有误.但有时候一些零碎的小文件总是懒得再VS中打开, ...

随机推荐

  1. Django笔记-常见错误整理

    1.csrf错误 解决方法:在settings.py里注释掉相关内容即可 MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.Sess ...

  2. awk操作数组注意几点

    awk的数组跟其他程序设计语言的数组有所不同:1.可以直接在awk中定义数组:2.数组元素的初始值为0或空字符串,除非他们被显示的指定初始化:3.数组可以自动扩展:4.都是关联数组,数字下标也会转成字 ...

  3. redis删除list中指定index的值

    Redis的List删除命令: lrem : lrem mylist 0 "value"    //从mylist中删除全部等值value的元素   0为全部,负值为从尾部开始. ...

  4. C#异常类相关总结

    C#异常类相关总结 C#异常类相关总结 C#异常类一.基类ExceptionC#异常类二.常见的异常类1.SystemException类:该类是System命名空间中所有其他异常类的基类.(建议:公 ...

  5. 使用BLADE构建c++工程管理

    使用BLADE构建c++工程管理 字数764 阅读2753 评论2 喜欢4 一. c++工程依赖管理 之前在百度一直使用comake2构建c++项目,十分方便.免去了手写Makefile的痛苦,很多项 ...

  6. Logback LogBack

    1.简介 LogBack是一个日志框架,它与Log4j可以说是同出一源,都出自Ceki Gülcü之手.(log4j的原型是早前由Ceki Gülcü贡献给Apache基金会的) 1.1 LogBac ...

  7. Yii2-admin RBAC权限管理的实现

    原文地址:http://www.open-open.com/lib/view/open1434638805348.html   http://wlzyan.blog.163.com/blog/stat ...

  8. Linux环境PHP5.5以上连接SqlServer2008【全网最经典无错版】

    原文地址:http://blog.csdn.net/21aspnet/article/details/47451253 linux版本:64位CentOS 6.4 Nginx版本:nginx1.8.0 ...

  9. 缓存 HttpContext.Current.Cache和HttpRuntime.Cache的区别

    先看MSDN上的解释: HttpContext.Current.Cache:为当前 HTTP 请求获取Cache对象. HttpRuntime.Cache:获取当前应用程序的Cache.  我们再用. ...

  10. git在windows命令行下使用

    “不是内部或外部命令,也不是可运行的程序”,通常要将程序的exe路径配置环境变量. 将git的bin目录的路径添加到环境变量path中即可.