切换TFS 2013至2017后ISDEV签名.dll时出现致命错误-1027
我刚帮团队解决了一模一样的问题——从TFS 2013切换到2017构建平台后,每次构建都报 ISDEV : fatal error -1027: Failed signing .dll,删掉当前报错的.dll,下一个.dll又会触发同样的错误,看起来所有需要签名的文件都逃不过这个问题。之前搜这个错误信息几乎找不到有效结果,所以整理了排查和解决的步骤,希望能帮到你:
问题重现场景
刚从TFS 2013切换到TFS 2017构建平台,现在无法构建,出现错误
ISDEV : fatal error -1027: Failed signing .dll。最初是另一个.dll触发该错误,删除后当前.dll又报错,似乎无论遇到哪个.dll都会出现该错误。
有效的解决方案
按顺序尝试以下步骤,大概率能解决问题:
给构建服务账户添加证书私钥访问权限
TFS 2017的构建服务账户默认可能没有访问代码签名证书的权限。打开certmgr.msc(证书管理器),找到你的代码签名证书,右键选择「所有任务」→「管理私钥」,添加构建服务账户(通常是NT AUTHORITY\NETWORK SERVICE,如果是自定义构建账户就加对应的域账户),给它赋予「读取」权限。更换构建代理的运行账户
如果你的构建代理是用本地系统账户启动的,试着换成有证书访问权限的域账户。打开服务管理器,找到TFS构建代理对应的服务,右键「属性」→「登录」选项卡,切换到指定的域账户,重启服务后再触发构建。核对InstallShield版本和路径
确认TFS 2017构建环境里的InstallShield版本和你本地开发环境一致。有时候版本不匹配会导致签名工具的依赖或路径出问题,检查构建定义里InstallShield的执行路径是否正确,必要时重新配置构建步骤的工具路径。临时禁用增量构建测试
先关掉构建定义里的增量构建选项,强制做一次完整构建。如果完整构建成功,说明可能是增量构建的缓存导致了签名冲突,后续再针对性排查缓存的问题。
内容的提问来源于stack exchange,提问作者Ben_G

