.net项目编译时,无法在证书存储区中找到清单签名证书

编译.net项目时,出现无法找到清单签名证书的状况,用方法3解决了。用方法1和2只能顺利编译,但不能发布。

<wbr></wbr>

最直接有效的方法是1,2和1效果一样只不过是处理的步骤多几步:

1.工程->属性->签名->为ClickOnce清单签名

<wbr></wbr>

2.用记事本打开对应csproj文件。将
<SignManifests>true</SignManifests>改为
<SignManifests>false</SignManifests>.

<wbr></wbr>

<wbr></wbr>

3.在vs2005中出现“无法在证书存储区中找到清单签名证书”,解决办法是用记事本打开项目的.csproj文件,删除类似以下xml就能顺利通过编译了
<ManifestCertificateThumb<wbr>print&gt;B531F2CF222748C5E29308FC<wbr>2247704827D1EA8C&lt;/ManifestCertificateThumb<wbr>print&gt;<br> &lt;ManifestKeyFile&gt;xxxx_TemporaryKey.pfx&lt;/ManifestKeyFile&gt;<br> &lt;GenerateManifests&gt;true&lt;/GenerateManifests&gt;<br> &lt;SignManifests&gt;true&lt;/SignManifests&gt;<br> &lt;PublishUrl&gt;D:\xxx\bin\&lt;/PublishUrl&gt;<br> &lt;Install&gt;true&lt;/Install&gt;<br> &lt;InstallFrom&gt;Disk&lt;/InstallFrom&gt;<br> &lt;UpdateEnabled&gt;false&lt;/UpdateEnabled&gt;<br> &lt;UpdateMode&gt;Foreground&lt;/UpdateMode&gt;<br> &lt;UpdateInterval&gt;7&lt;/UpdateInterval&gt;<br> &lt;UpdateIntervalUnits&gt;Days&lt;/UpdateIntervalUnits&gt;<br> &lt;UpdatePeriodically&gt;false&lt;/UpdatePeriodically&gt;<br> &lt;UpdateRequired&gt;false&lt;/UpdateRequired&gt;<br> &lt;MapFileExtensions&gt;true&lt;/MapFileExtensions&gt;<br> &lt;CreateWebPageOnPublish&gt;false&lt;/CreateWebPageOnPublish&gt;<br> &lt;ApplicationVersion&gt;1.0.0.%2a&lt;/ApplicationVersion&gt;<br> &lt;IsWebBootstrapper&gt;false&lt;/IsWebBootstrapper&gt;<br> &lt;BootstrapperEnabled&gt;true&lt;/BootstrapperEnabled&gt;</wbr></wbr></wbr>


<wbr></wbr>

出现以上原因可能是:clickone自动生成的证书过期了(有效期只有一年,且不能修改延长),
若是重新生成新的证书客户端自动更新将失败。你可以在程序发布前自己生成证书,把时间延长个若干年。采用MakeCert.exe等工具稍加改动即可

你可能感兴趣的:(.net)