15

与签署 ClickOnce 清单密切相关的复选框保持默认为在发布时选中。这个问题中列出的答案都没有帮助我。

我的解决方案中有两个项目,以及其他参考项目。一个项目是 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" />

这是一个非常大的文件,其中包含多个对签名等的引用。未选中 Signing 选项的项目在其 .csproj 文件中没有此行。<Import Project>

问题

现在,我并不完全了解 .targets 文件的全部内容,并且在我知道自己想要什么之前,我不愿意去屠杀它以寻找解决方案。这个文件可能是我的问题的原因吗?如果是这样,我该如何修改它以阻止它妨碍我?如果没有,有没有人遇到过这个可以提供解决方案?

编辑:

我刚刚阅读了如何不签署 ClickOnce 清单,它再次谈到了发布。我仍然很好奇是否可以将其从我的构建中关闭。当我发布应用程序时,我对签署应用程序没有任何疑虑,但我更愿意在不发生默认情况下构建它。

4

1 回答 1

7

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

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

于 2015-07-27T18:10:18.563 回答