Visual studio 使用Visual Studio 2008对程序集进行签名时出现错误“对象已存在”

Visual studio 使用Visual Studio 2008对程序集进行签名时出现错误“对象已存在”,visual-studio,deployment,clickonce,code-signing,Visual Studio,Deployment,Clickonce,Code Signing,我在几个地方遇到了相同的问题,包括堆栈溢出问题 大多数人在WindowsVista和Windows7上都有问题,但在我的情况下,我是作为WindowsXP上的管理用户运行的。我已经尝试了我找到的所有解决方案,到目前为止没有一个有效。因为我发现的大多数信息都是几年前的:是否有更好的/最新的信息,或者有更有效的修复方法 我的代码签名证书来自,它可以与该实用程序配合使用。我已经使用SignTool.EXE对许多在Visual Studio之外构建的EXE文件进行了签名,它们都正确验证 我尝试用Sign

我在几个地方遇到了相同的问题,包括堆栈溢出问题

大多数人在WindowsVista和Windows7上都有问题,但在我的情况下,我是作为WindowsXP上的管理用户运行的。我已经尝试了我找到的所有解决方案,到目前为止没有一个有效。因为我发现的大多数信息都是几年前的:是否有更好的/最新的信息,或者有更有效的修复方法

我的代码签名证书来自,它可以与该实用程序配合使用。我已经使用SignTool.EXE对许多在Visual Studio之外构建的EXE文件进行了签名,它们都正确验证


我尝试用SignTool.EXE以这种方式为我当前项目的EXE文件签名,但似乎存在一些与我尝试用于此项目的发布相关的额外问题。。。哈希值不匹配,即使EXE文件已签名,ClickOnce仍报告为publisher unknown。

我仍然无法使IDE选项正常工作,但这对我来说很有效,还不错:

启用对IDE中的ClickOnce清单进行签名,并从存储中选择从PFX文件中选择会产生相同的对象已存在错误

不要在组件上进行检查和签名

添加要运行的生成后事件:

c:\signtool.exe sign /f c:\cert.pfx /p password /t http://tsa.starfieldtech.com c:\project\obj\debug\myapp.exe
因此,基本上使用signtool.exe进行签名是一个技巧,但清单也需要签名,我让IDE来完成,另一个不明显的部分是,您需要从OBJ文件夹(而不是BIN文件夹)对exe文件进行签名


我想这比IDE更喜欢,因为有了IDE,我想你每次都必须输入密码。这样,密码就会出现在生成后事件命令行中。

如果您已经使用了“为程序集签名”选项,则错误将持续存在。您必须使用外部编辑器Notepad++ie编辑项目文件,并删除.pfx条目。然后它会像一个符咒一样工作。即使您不使用/t选项