C# ClickOnce启动错误

C# ClickOnce启动错误,c#,.net,wpf,clickonce,.net-standard,C#,.net,Wpf,Clickonce,.net Standard,我有一个WPF clickonce应用程序,它依赖于我内部构建的netStandard包。 这会自动引入对各种系统外观组件的引用,例如 System.Security.Cryptography.Primitives System.Security.Cryptography.X509证书 等 启动ClickOnce应用程序时,会显示以下消息: 无法安装或运行应用程序。该应用程序要求首先在全局程序集缓存(GAC)中安装assembly System.Security.Cryptography.X50

我有一个WPF clickonce应用程序,它依赖于我内部构建的netStandard包。 这会自动引入对各种系统外观组件的引用,例如 System.Security.Cryptography.Primitives System.Security.Cryptography.X509证书 等

启动ClickOnce应用程序时,会显示以下消息: 无法安装或运行应用程序。该应用程序要求首先在全局程序集缓存(GAC)中安装assembly System.Security.Cryptography.X509证书版本4.0.0.0

我认为这很奇怪,解决这个问题的所有努力都失败了。我尝试排除程序集,然后包括它们,结果是一样的

进一步思考: WPF应用程序以net461为目标。它取决于我作为nuget包构建的netStandard库。该软件包和其他类似Newtonsoft.Json的软件包包含在.netstandardbrary中,并作为其他小型System.*.4.3.0软件包的宿主。它们中的大多数都只有.NET framework的类型转发器。现在,当您通过clickonce安装WPF时,部署人员会感到困惑,并且出于某种原因坚持认为System.Security.Cryptography(例如)必须在GAC中,可能是因为它“将其视为框架程序集(我的猜测)”

这是ClickOnce日志的输出:

组件存储事务失败摘要 未检测到任何事务错误

警告 此操作期间没有警告

运行进度状态 *[2017年5月5日12:31:44 PM]:XXXXXXXXXXXXXXXXXXXXXX.application的激活已启动。 *[5/5/2017 12:31:44 PM]:部署清单的处理已成功完成。 *[5/5/2017 12:31:44 PM]:应用程序的安装已开始。 *[5/5/2017 12:31:44 PM]:申请清单的处理已成功完成。 *[5/5/2017 12:31:47 PM]:找到兼容的运行时版本4.0.30319。 *[5/5/2017 12:31:47 PM]:使用Microsoft.mshtml检测依赖程序集Microsoft.mshtml,版本=7.0.3300.0,区域性=中性,PublicKeyToken=B03F5F7F11D50A3A,版本=7.0.3300.0,区域性=中性,PublicKeyToken=B03F5F7F11D50A3A。 *[5/5/2017 12:31:47 PM]:使用CrystalDecisions.ReportAppServer.CommonObjectModel检测依赖程序集CrystalDecisions.ReportAppServer.CommonObjectModel,版本=13.0.2000.0,区域性=neutral,PublicKeyToken=692FBEA5521E1304,processorArchitecture=msil。ReportAppServer.CommonObjectModel,版本=13.0.2000.0,区域性=neutral,PublicKeyToken=692FBEA5521E1304,processorArchitecture=msil。 *[5/5/2017 12:31:47 PM]:检测依赖程序集stdole,版本=7.0.3300.0,区域性=中性,PublicKeyToken=B03F5F7F11D50A3A使用stdole,版本=7.0.3300.0,区域性=中性,PublicKeyToken=B03F5F7F11D50A3A。 *[5/5/2017 12:31:47 PM]:使用CrystalDecisions.ReportAppServer.DataDefModel检测依赖程序集CrystalDecisions.ReportAppServer.DataDefModel,版本=13.0.2000.0,区域性=neutral,PublicKeyToken=692FBEA5521E1304,processorArchitecture=msil。ReportAppServer.DataDefModel,版本=13.0.2000.0,区域性=neutral,PublicKeyToken=692FBEA5521E1304,processorArchitecture=msil。 *[5/5/2017 12:31:47 PM]:使用CrystalDecisions.ReportAppServer.ObjectFactory检测依赖程序集CrystalDecisions.ReportAppServer.ObjectFactory,版本=13.0.2000.0,区域性=neutral,PublicKeyToken=692FBEA5521E1304,processorArchitecture=msil。ReportAppServer.ObjectFactory,版本=13.0.2000.0,区域性=neutral,PublicKeyToken=692FBEA5521E1304,processorArchitecture=msil。 *[5/5/2017 12:31:47 PM]:使用System.Security.Cryptography.X509证书检测相关程序集System.Security.Cryptography.X509证书,版本=4.0.0.0,区域性=中性,PublicKeyToken=B03F5F7F11D50A3A,processorArchitecture=msil,使用System.Security.Cryptography.X509证书,版本=4.0.0.0,区域性=中性,PublicKeyToken=B03F5F7F11D50A3A,processorArchitecture=msil

错误详细信息 在此操作期间检测到以下错误。 *[5/5/2017 12:31:47 PM]System.Deployment.Application.DependentPlatformMissingException(未知子类型) -无法安装或运行应用程序。该应用程序要求首先在全局程序集缓存(GAC)中安装assembly System.Security.Cryptography.X509证书版本4.0.0.0。 -来源:System.Deployment -堆栈跟踪: 位于System.Deployment.Application.PlatformDetector.VerifyPlatformDependencies(AssemblyManifest appManifest、AssemblyManifest deployManifest、String tempDir) 位于System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState子状态、ActivationDescription actDesc、Int64 transactionId、TempDirectory和downloadTemp) 位于System.Deployment.Application.ApplicationActivator.InstallApplication(订阅状态和子状态,ActivationDescription actDesc) 在System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri、Boolean isShortcut、String textualSubId、String deploymentProviderUrlFromExtension、BrowserSettings BrowserSettings、String&errorPageUrl) 位于System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(对象状态)

组件存储事务详细信息
没有可用的事务信息。

是否已将缺少的程序集包含在应用程序文件中?有时ClickOnce发布会因为应用程序内部没有使用而丢失一些程序集。@Christoph,是的,我已经这样做了。这没用。在检查这些程序集的IL时,我注意到了以下属性:[assembly:AssemblyMetadata(“.NETFrameworkAssembly”,”)],这会在ClickOnce选择坚持的内容中起作用吗?这将是错误的,因为ReferenceAssembly的更改的表面积不包括通过nuget提供的一些最近的重构。根据您在ClickOnce设置中针对的是确切的程序集这一事实,它不应该坚持此属性。您是否尝试过将Clic本地化