c# - 为什么 "Sign the ClickOnce manifests"复选框在构建时默认选中?

标签 c# msbuild vsto clickonce

Sign the ClickOnce manifests checkbox keeps defaulting to checked on publish密切相关.这个问题中列出的答案都没有帮助到我。

我的解决方案中有两个项目,以及其他引用项目。一个项目是 C# Windows Presentation Foundation (WPF) (输出类型 Windows 应用程序),当我取消选中“签署 ClickOnce list ”时,它在构建后仍未选中。

第二个项目,也是启动项目,是一个Visual Studio Tools for Office (VSTO)项目(输出类型默认为类库,不能更改)。当我取消选中其中的“签署 ClickOnce list ”然后构建解决方案(或仅构建项目)时,整个构建过程完成后再次选中该选项。

我不熟悉 .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> .前两个是假的。第二个有一些唯一的 key 。

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" />

这是一个非常大的文件,其中多次引用了签名等内容。未选中签名选项的项目没有有这个<Import Project>其 .csproj 文件中的行。

问题

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

编辑:

我刚刚读了How to not sign a ClickOnce manifest ,这又谈到了出版。我仍然很好奇我是否可以将其从我的构建中关闭。在发布应用程序时,我对签署应用程序没有任何疑虑,但我更愿意在不发生默认情况的情况下构建它。

最佳答案

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

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

关于c# - 为什么 "Sign the ClickOnce manifests"复选框在构建时默认选中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17622143/

相关文章:

x64计算机上的MSBuild.Community.Tasks.Attrib失败

c# - 如何查找单元格的命名范围 - VSTO

c# - 是否可以从 VSTO 中的 Range.Value 获取一个 int?

c# - Outlook 2016 - VSTO 插件 - 单击功能区控件导致 outlook 崩溃

c# - 如何使用 Spring-objects 在 XML v1.0 中的对象属性中设置当前日期?

c# - 嵌入的图像显示为损坏

c# - Azure 和 C++ DLL 文件

c# - 使用具有不同嵌套类型的 HierarchicalDataTemplate

sql-server - 用于恢复 SQL Server 数据库的 Msbuild 任务

visual-studio - 包含编译文件(增量构建)