我正在构建Windows服务并关注this MSDN article,但我仍然坚持在“创建安装程序”下的第3步。我找不到它所指的“Add Installer”链接。我点击了所有地方,包括完全按照它给出的说明,但我似乎无法找到它。 Google上的一些人遇到了同样的问题,但从未找到过解决方案(除了添加ServiceInstaller对象并手动配置)。
有没有其他人遇到过这个问题并找到了理由?如果重要的话,我正在使用VS2008并将.Net 2.0作为目标。
答案 0 :(得分:6)
他们所谈论的“灰色区域”是“属性”面板的“属性”中的“命令”面板(不是拼写错误)。它不是很有用,所以你可能把它关了,我做了。
您可以通过右键单击“属性”面板并选择“命令”来重新启用它,或者通过右键单击服务设计视图直接添加安装程序项目(使用“向组中添加组件”的大棕褐色窗口...“)并选择”添加安装程序“。
答案 1 :(得分:3)
对于Visual Studio 2012,右键单击“Services1.cs”并选择“View Designer”(或按Shift-F7)。然后,右键单击设计师的灰色背景。
然后,只有这样,你才会看到微软一直躲过你的复活节彩蛋:难以捉摸的Add Installer
链接。
答案 2 :(得分:2)
了解最新的visual studio express(2015)版本:
似乎我们不能从快递版中获得这个“添加安装程序”。但这真的很简单。您只需创建一个类并添加以下代码即可。
您还需要添加引用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);
}
}
}
答案 3 :(得分:0)
检查您尝试添加安装程序的 .cs 文件是否扩展了 System.ServiceProcess.ServiceBase
而不是 System.ComponentModel.Component
。
要将 .cs 文件作为代码而不是在设计器中打开,请在解决方案资源管理器中选择它并按 F7 或右键单击它并选择“查看代码”。