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