为什么“签署ClickOnce清单”复选框保持默认以检查构建?

时间:2013-07-12 18:58:08

标签: c# msbuild vsto clickonce

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数据,但我发现了一些可能相关的内容:

1

在VSTO项目的.csproj文件中,有一个评论部分说明:

This section enables pre- and post-build steps. However, in VSTO use
MSBuild tasks instead of these properties.       

该部分定义了<SignManifests><SignAssembly><ManifestCertificateThumbprint>。前两个是假的。第二个有一些独特的关键。

2

在找到关于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,再次谈到了出版问题。如果我可以将它从我的版本中删除,我仍然很好奇。我在发布应用程序时没有对签名应用程序的任何疑虑,但我更愿意在没有默认发生的情况下构建应用程序。

1 个答案:

答案 0 :(得分:7)

这是VSTO团队成员的一篇文章。 https://blogs.msdn.microsoft.com/vsto/2009/04/29/signing-and-re-signing-manifests-in-clickonce-saurabh-bhatia/

解释是VSTO需要签署ClickOnce部署,因为加载项必须在增强的安全模型下运行。这篇文章更详细。