“正确”的方式可能是设置部署脚本和安装程序,但只需单击Visual Studio中的发布并跳过远程桌面就可以在开发过程中更加方便.
我有一个管理员Web应用程序作为命令行应用程序的前端 – 与您正在做的略有不同,但相同的解决方案应该工作.
只需在管理员Web应用程序中添加对控制台项目的引用即可.即使您没有在控制台项目中调用任何方法,该引用也会导致在您发布管理网站时重建和上载控制台应用程序.
添加到Web应用程序的简单启动/停止页面负责第2步和第2步. 4 – Mine调用Process.Start()/ Process.Kill(),尽管您显然可以选择更干净的关闭,具体取决于admin.exe的设置.
下面是我的开始/停止页面中的代码 – 我将它们设置为Web服务方法(以方便您可能不需要的某些监视),但它们应该可以通过简单的按钮单击方法调用.请注意,服务帐户需要运行/停止进程的权限 – 在开发框中,最简单的选项是将iis设置为以管理员用户身份运行,而不是默认服务帐户.
private void KillProcess(string name)
{
var binpath = Server.MapPath("~/bin");
var pp2 = Process.GetProcesses();
var pp = from p in pp2 where p.ProcessName.Contains(name) && !p.ProcessName.Contains("vshost") select p;
foreach (var p in pp)
{
p.Kill();
}
}
[WebMethod]
public void StartQueueRunner()
{
var binpath = Server.MapPath("~/bin");
System.Diagnostics.Process.Start(Path.Combine(binpath,"TwoNeeds.QueueRunner.exe"));
}
[WebMethod]
public void StartQueueRunner()
{
var binpath = Server.MapPath("~/bin");
System.Diagnostics.Process.Start(Path.Combine(binpath,"TwoNeeds.QueueRunner.exe"));
}