操作系统:Windows 7 64 bit,使用安装了.NET 4.5的Visual Studio Pro 2012。
我在Visual Studios中使用了“发布”选项,并确保已单击“签署clickOnce” list 和签署“程序集”。它仍然不会在另一台计算机上运行,并说我没有有效的XML签名。我已粘贴以下错误消息。
我也读过:How to move a ClickOnce deployment package,Do I have to sign my ClickOnce manifest?。 VS2012 .NET 4.0 Clickonce VSTO CryptographicException: SignatureDescription could not be created for the signature algorithm supplied和其他几个。
我需要至少能够在.NET 4.0上部署我的程序,而且我无权访问其他版本的Visual Studios。提前致谢!
完整的错误如下:
平台版本信息
Windows:5.1.2600.196608(Win32NT)
通用语言运行时:2.0.50727.3603
System.Deployment.dll:2.0.50727.3053(netfxsp.050727-3000)
mscorwks.dll:2.0.50727.3603(GDR.050727-3600)
dfdll.dll:2.0.50727.3053(netfxsp.050727-3000)
dfshim.dll:4.0.31106.0(Main.031106-0000)
来源
部署网址:file:/// C:/Documents%20and%20Settings/Administrator/Desktop/EatonWizard.application
错误摘要
下面是错误的摘要,这些错误的详细信息在日志的后面列出。
*激活C:\ Documents and Settings \ Administrator \ Desktop \ EatonWizard.application导致异常。检测到以下失败消息:
+从文件:/// C:/Documents%20and%20Settings/Administrator/Desktop/EatonWizard.application中读取异常 list : list 可能无效或无法打开文件。
+ list XML签名无效。
+无法为提供的签名算法创建SignatureDescription。
组件存储交易失败摘要
未检测到交易错误。
警告
在此操作期间没有警告。
运行进度状态
* [10/10/2012 2:05:02 PM]:C:\ Documents and Settings \ Administrator \ Desktop \ EatonWizard.application的激活已开始。
错误详情
在此操作期间检测到以下错误。
* [10/10/2012 2:05:02 PM] System.Deployment.Application.InvalidDeploymentException(ManifestParse)
-从文件:/// C:/Documents%20and%20Settings/Administrator/Desktop/EatonWizard.application中读取异常 list : list 可能无效或无法打开文件。
-来源:System.Deployment
- 堆栈跟踪:
在System.Deployment.Application.ManifestReader.FromDocument(String localPath,ManifestType manifestType,Uri sourceUri)中
在System.Deployment.Application.DownloadManager.DownloadDeploymentManifestDirectBypass(SubscriptionStore子商店,Uri和sourceUri,TempFile和tempFile,SubscriptionState和subState,IDownloadNotification通知,DownloadOptions选项,ServerInformation和serverInformation)
在System.Deployment.Application.DownloadManager.DownloadDeploymentManifestBypass(SubscriptionStore子商店,Uri&sourceUri,TempFile&tempFile,SubscriptionState&subState,IDownloadNotification通知,DownloadOptions选项)处
在System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, bool(boolean) 值isShortcut,字符串textualSubId,字符串DeploymentProviderUrlFromExtension,BrowserSettings browserSettings,字符串&errorPageUrl)
在System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(对象状态)
-内部异常-
System.Deployment.Application.InvalidDeploymentException(SignatureValidation)
- list XML签名无效。
-来源:System.Deployment
- 堆栈跟踪:
在System.Deployment.Application.Manifest.AssemblyManifest.ValidateSignature(Stream)
在System.Deployment.Application.ManifestReader.FromDocument(String localPath,ManifestType manifestType,Uri sourceUri)中
-内部异常-
System.Security.Cryptography.CryptographicException
-无法为提供的签名算法创建SignatureDescription。
-来源:System.Security
- 堆栈跟踪:
在System.Security.Cryptography.Xml.SignedXml.CheckSignedInfo(AsymmetricAlgorithm键)
在System.Security.Cryptography.Xml.SignedXml.CheckSignatureReturningKey(AsymmetricAlgorithm&signingKey)处
在System.Deployment.Internal.CodeSigning.SignedCmiManifest.Verify(CmiManifestVerifyFlags verifyFlags)
在System.Deployment.Application.Manifest.AssemblyManifest.ValidateSignature(Stream)
组件存储交易明细
没有可用的交易信息。
最佳答案
我今天有同样的问题。这是我解决的方法:
造成问题的原因:
我们使用vs2012和Framework 4.5创建了一个clickonce项目。
然后,我们将目标框架更改为4.0(客户要求)。
问题是:Framework 4.5使用SHA-256算法进行签名,而4.0使用SHA-1。当我们将目标框架更改为4.0时,vs2012并未更改算法。
解决方案:手动更改算法,生成新证书。
转到项目属性->签名
您将看到“签名算法”中正在使用的算法。您可以创建一个新的测试证书,然后将其更改为“sha1RSA”
关于c# - “Manifest XML signature is not valid”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12826798/