与Sign the ClickOnce manifests checkbox keeps defaulting to checked on publish密切相关。这个问题中列出的答案都没有帮助我。
我的解决方案中有两个项目,以及其他参考项目。一个项目是C#Windows Presentation Foundation (WPF)
(输出类型Windows应用程序),当我取消选中“签署ClickOnce清单”时,它在构建后仍未选中。
第二个项目,也是启动项目,是一个Visual Studio Tools for Office (VSTO)
项目(输出类型默认为类库,不能更改)。当我取消选中“在其中签署ClickOnce清单”然后构建解决方案(或只是项目)时,整个构建过程完成后再次选中选项。
我不熟悉.csproj文件中的XML数据,但我发现了一些可能相关的内容:
在VSTO项目的.csproj文件中,有一个评论部分说明:
This section enables pre- and post-build steps. However, in VSTO use MSBuild tasks instead of these properties.
该部分定义了<SignManifests>
,<SignAssembly>
和<ManifestCertificateThumbprint>
。前两个是假的。第二个有一些独特的关键。
在找到关于MSBuild任务的评论后,我后来发现:
<!-- Include additional build rules for an Office application add-in. -->
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets" />
这是一个非常大的文件,有多个引用签名等。 “签名”选项未选中的项目 在其.csproj文件中没有<{1}}行。
现在,我还没有充分意识到.targets文件的全部内容,并且我不愿意去寻找解决方案直到我知道自己在追求什么。这个文件可能是我的问题的原因吗?如果是这样,我如何修改它以阻止它妨碍我? 如果没有,有没有人遇到过此之前可以提供解决方案?
我刚刚阅读了How to not sign a ClickOnce manifest,再次谈到了出版问题。如果我可以将它从我的版本中删除,我仍然很好奇。我在发布应用程序时没有对签名应用程序的任何疑虑,但我更愿意在没有默认发生的情况下构建应用程序。
答案 0 :(得分:7)
这是VSTO团队成员的一篇文章。 https://blogs.msdn.microsoft.com/vsto/2009/04/29/signing-and-re-signing-manifests-in-clickonce-saurabh-bhatia/
解释是VSTO需要签署ClickOnce部署,因为加载项必须在增强的安全模型下运行。这篇文章更详细。