我正在使用clickonce安装旧的旧版winforms应用程序。该应用程序最初是由最近过期的自签名证书进行演唱的,并使用Visual Studio“创建测试证书”工具创建了新的自签名证书。问题在于,创建新证书后,application.exe.manifest具有某些resource-dll依赖项的错误路径。该应用程序可以安装并正常运行,但是由于某些资源dll:s没有被复制到正确的路径,因此该应用程序的本地化被破坏了。
例如,在下面的示例中,您可以看到MyApplication.PersistentObjects.resources.dll依赖性。安装该应用程序后,应将其复制到应用程序安装目录中的“ fi-FI”文件夹中,但不能。如果我手动复制文件,则应用程序将正常运行。
奇怪的是,使用某些工作站来构建清单是正确构建的。即使我尝试为以前工作的较旧版本的应用程序生成清单,问题也仍然存在。因此,我认为问题可能与构建环境有关,而不是与新证书有关。我正在使用Visual Studio 2017的发布功能来构建清单。
对旧版本的依赖性。可行
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="fi-FI\MyApplication.PersistentObjects.resources.dll" size="7680">
<assemblyIdentity name="MyApplication.PersistentObjects.resources" version="1.0.0.0" language="fi-FI" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>u9nDJ6g9YVoJqrH9B4u+8uVVPRCWgMeNNsfFsiJKFdU=</dsig:DigestValue>
</hash>
</dependentAssembly>
对新版本的依赖性。这不起作用
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="MyApplication.PersistentObjects.resources.dll" size="7680">
<assemblyIdentity name="MyApplication.PersistentObjects.resources" version="1.0.0.0" language="fi-FI" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>xYh9ijZkRARKgrSp5DUays/YHXwGAEpIhuh8jahwdEA=</dsig:DigestValue>
</hash>
</dependentAssembly>