在Sn.exe中自动输入密码我需要创建一个构建后事件来执行以下操作:sn-iMyKey.pfxMyKeyContainerNametlbimp$(ConfigurationName)MyCom.tlb/out:$(ConfigurationName)NETMyCom.dll/keycontainer:MyKeyContainerNamesn-dMyKeyContainerName当VisualStudio执行第一条语句时,它要求输入密码并等待用户指定,但失败了。Microsoft(R).NETFramework强名称实用程序版本2.0.50727.42版权所有(c)MicrosoftCorporation。版权所有。输入PKCS#12密钥文件的密码:无法解析mykey.pfx中的PKCS#12blob-句柄无效。我尝试使用sn命令行参数指定密码,但我看不到这样做的方法。请帮忙。真诚的,希尔米。如果像我一样,您不使用TFS或MSBUILD进行构建,则至少有两种方法:a)从脚本运行sn.exe,并将密码写入标准输入请参见此处的C#示例:注意:使用.NET4版本sn.exe,似乎无法将其作为外部进程执行(至少在WindowsXP上),并将密码写入标准输入(我尝试将python+与C#一起使用,而sn.exe似乎只是退出无需等待输入密码)。b)使用安装的pfx使用sn.exe重新签署密码。如果您已经安装了pfx文件,那么您可能知道容器名称(通常VisualStudio使用类似VS_KEY_ABAB1234ABAB1234的名称)如果像我一样您不知道或不记得容器名称,那么只需重新安装pfx文件:sn-imyPfxFileVS_KEY_ABAB1234ABAB1234sn。exe在pfx文件中安装证书时会提示您输入密码。然后你可以让sn.exe重新签署你的程序集而不提示输入密码:sn-RcamyAssembly.dllmyVSkey以上可以在构建脚本中使用,因为不需要交互:-)请记住检查签名是否真的有效:sn-vmyAssembly.dll我今天遇到了这个问题,我在ClickOnceC#应用程序中使用了C++DLL。我在DLL上设置了延迟签名,然后使用生成后事件来运行SN,如下所示:ECHO|sn.exe-R$(OutDir)$(TargetFileName)$(MSBuildProjectDirectory)一定喜欢老式的批处理方法。ECHO打印你的密码,管道|将输出通过管道传输到接受密码的SN.exe。您可能不需要像我一样延迟签名和-R开关,但您明白了。编辑:这可能不会工作更长时间-我的回答是从2013年开始的,当时我使用VS2010。我已经为此工作了近两天了。我尝试了旧版本的sn.exe(回到2.0!),但我无法获得echoPASSWORD|技巧工作。最后,我这样做了:[void][System.Reflection.Assembly]::LoadWithPartialName("'System.Windows.Forms")Start-Process"C:ProgramFiles(x86)MicrosoftSDKsWindowsv7.0ABinsn.exe"-ArgumentList"-i`"Certificate.pfx`"VS_KEY_XXXXXXX"-NoNewWindow-Wait[System.Windows.Forms.SendKeys]::SendWait("PASSWORDHERE~")我使用的来源:https://technet.microsoft.com/en-us/library/ff731008.aspx由于-NoNewWindow,我最终不需要VisualBasic的AppActivate()。更新:使用-Wait参数效果更好!以上就是C#学习教程:Sn.exe中自动输入密码的全部内容分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:
