VS2010中64位Windows服务的部署包

Bas*_*sic 2 deployment 64-bit .net-4.0 visual-studio-2010

我正在尝试为面向x64的Windows服务创建部署包.

我已经将安装项目本身定位为x64但我需要添加自定义操作来实际注册/取消注册服务.

但是,当我添加自定义操作并尝试运行安装程序时,我收到一个BadFormat异常,表明我的服务的可执行文件已损坏.

我怀疑我遇到了这里提到问题,但我无法证明这一点.

这个Windows服务正在开发中,作为使用TFS进行自动构建和部署,持续集成等的更大应用程序的一部分 - 因此,使用需要使用GUI的工具手动调整二进制文件的位是一个明确的禁忌.

那么......我需要知道的是; 是否可以在VS2010中为64位Windows服务自动构建部署包?如果是这样的话?

Han*_*ant 5

当您的服务或其使用的某个程序集在Target Platform设置更改为x86的情况下构建时,就会发生这种情况.在这种情况下,您必须使用正确版本的Installutil.exe来注册该服务.有两个,分别是c:\ windows\microsoft.net\framework和\ framework64,分别是32位和64位版本.你需要前者的几率很高.如果您创建了一个安装项目,那么您将TargetPlatform属性更改为x86.

还要检查是否确实需要设置目标平台,只有在依赖于非托管代码(如COM服务器)时才会这样做.C#设置位于Project + Properties,Compile选项卡中.VS2010的默认设置是x86,如果没有这种依赖关系,只需将其翻转到AnyCPU即可.