编译.net项目时,出现无法找到清单签名证书的状况,用方法3解决了。用方法1和2只能顺利编译,但不能发布。
最直接有效的方法是1,2和1效果一样只不过是处理的步骤多几步:
1.工程->属性->签名->为ClickOnce清单签名
2.用记事本打开对应csproj文件。将
<SignManifests>true</SignManifests>改为
<SignManifests>false</SignManifests>.
3.在vs2005中出现“无法在证书存储区中找到清单签名证书”,解决办法是用记事本打开项目的.csproj文件,删除类似以下xml就能顺利通过编译了
<ManifestCertificateThumb
<ManifestKeyFile>xxxx_TemporaryKey.pfx</ManifestKeyFile>
<GenerateManifests>true</GenerateManifests>
<SignManifests>true</SignManifests>
<PublishUrl>D:\xxx\bin\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<CreateWebPageOnPublish>false</CreateWebPageOnPublish>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<BootstrapperEnabled>true</BootstrapperEnabled>
出现以上原因可能是:clickone自动生成的证书过期了(有效期只有一年,且不能修改延长),
若是重新生成新的证书客户端自动更新将失败。你可以在程序发布前自己生成证书,把时间延长个若干年。采用MakeCert.exe等工具稍加改动即可
下面的方法也来自网络:
方案1:右击项目属性—>签名—>为ClickOnce清单签名,将勾掉的选项去掉。
方案2:在签名中创建一个新的签名。
方案3:记事本打开相应的csproj文件,调整节点值。<SignManifests>true</SignManifests>将true修改为false。