我正在构建一个Windows服务,并遵循这篇MSDN文章,但在“创建安装程序”下的第3步卡住了。我找不到它所提到的“添加安装程序”链接。我已经点击过任何地方,包括按照它给出的指示完全操作,但似乎找不到。一些在谷歌上的人也遇到了同样的问题,但从未找到解决办法(除了手动添加ServiceInstaller对象并进行配置)。
有其他人遇到过这个问题并找到原因吗? 我正在使用VS2008并针对.Net 2.0。
我正在构建一个Windows服务,并遵循这篇MSDN文章,但在“创建安装程序”下的第3步卡住了。我找不到它所提到的“添加安装程序”链接。我已经点击过任何地方,包括按照它给出的指示完全操作,但似乎找不到。一些在谷歌上的人也遇到了同样的问题,但从未找到解决办法(除了手动添加ServiceInstaller对象并进行配置)。
有其他人遇到过这个问题并找到原因吗? 我正在使用VS2008并针对.Net 2.0。
他们所谈论的“灰色区域”,是指属性面板的命令面板(不是笔误)。它并不是很有用,所以你可能已经把它关掉了,我是这么做的。
您可以通过右键单击属性面板并选择“命令”来重新启用它,或者直接通过右键单击服务设计视图(带有“添加组件到您的类…”的大棕色窗口)并选择“添加安装程序”来添加安装程序项目。
为了跟上新的Visual Studio Express(2015)版本,请更新。
看起来我们不能从Express版中获取这个“添加安装程序”的功能。但实际上很简单。您只需要创建一个类并添加以下代码。
您还需要添加引用System.Configuration.Install.dll。
using System.Configuration.Install;
using System.ServiceProcess;
using System.ComponentModel;
namespace SAS
{
[RunInstaller(true)]
public class MyProjectInstaller : Installer
{
private ServiceInstaller serviceInstaller1;
private ServiceProcessInstaller processInstaller;
public MyProjectInstaller()
{
// Instantiate installer for process and service.
processInstaller = new ServiceProcessInstaller();
serviceInstaller1 = new ServiceInstaller();
// The service runs under the system account.
processInstaller.Account = ServiceAccount.LocalSystem;
// The service is started manually.
serviceInstaller1.StartType = ServiceStartMode.Manual;
// ServiceName must equal those on ServiceBase derived classes.
serviceInstaller1.ServiceName = "SAS Service";
// Add installer to collection. Order is not important if more than one service.
Installers.Add(serviceInstaller1);
Installers.Add(processInstaller);
}
}
}
对于Visual Studio 2012,右键单击“Services1.cs”,选择“查看设计”(或按下Shift-F7键)。然后,右键单击设计器的灰色背景。
只有在那时,你才会看到微软一直隐藏着的复活节彩蛋:神秘的添加安装程序
链接。
将此翻译成中文: (There is no need to translate the HTML code. It is just displaying an image.)
请检查您要添加安装程序的.cs文件是否扩展了System.ServiceProcess.ServiceBase
而不是System.ComponentModel.Component
。
要以代码方式而非设计器方式打开.cs文件,请在“解决方案资源管理器”中选择它并按F7键,或右键单击它并选择“查看代码”。