C#InstallUtil / ManagedInstallerClass:为什么键值对不会传递给安装程序上下文参数集合?

我将服务名称传递给参数列表,但是当我查看安装程序上下文时,它不存在:

args = new[] { Assembly.GetExecutingAssembly().Location, "/ServiceName=WinService1" }; ManagedInstallerClass.InstallHelper(args); 

为什么键值对不会传递到安装程序上下文中?

 public override void Install(IDictionary stateSaver) { foreach (var param in Context.Parameters) { // ServiceName is not available in the Parameters collection } } 

这是一个相当古老的线程,但也许有人仍然可以使用我可以拥有的答案,如果它在这里早些时候:)。 只有位置之前的参数才会传递到安装程序的上下文中。 试试这个:

 args = new[] { "/ServiceName=WinService1", Assembly.GetExecutingAssembly().Location }; ManagedInstallerClass.InstallHelper(args); 

试试这段代码:

 IDictionary dictionary = new Dictionary>(); dictionary.Add(Assembly.GetExecutingAssembly().Location, new string [] {"/ServiceName=WinService1"}); ManagedInstallerClass.InstallHelper(dictionary);