/// <summary> /// Initializes a new instance of class <seealso cref="RemoteToolInstaller"/> /// </summary> /// <param name="computerName"> /// The remote computer name. It can be a public ip address too. /// </param> /// <param name="username">Credential user name.</param> /// <param name="password">Credential password.</param> /// <param name="debuggerToolLocalPath"> /// The path to Visual Studio remote debugging tools. /// It is located under Visual Studio installation path. /// </param> public RemoteToolInstaller( string computerName, string username, string password, string debuggerToolLocalPath) { _debuggerToolLocalPath = debuggerToolLocalPath; _credential = RemotePowerShellUtils.CreatePSCredential(username, password); _computerName = computerName; }
/// <summary> /// Start the session and start the remote tool. /// This starts a backgroud task and leave it running till it is cancelled or stopped. /// </summary> /// <param name="computerName">The ipaddress of debugging target machine.</param> /// <param name="username">The username for authentication.</param> /// <param name="password">The password for authentication.</param> /// <param name="subscribeClosingEvent">The method to subscribe to solution closing event.</param> /// <param name="unsubscribeClosingEvent">The method to unsubscribe solution closing event.</param> public RemoteToolSession( string computerName, string username, string password, Action <EventHandler> subscribeClosingEvent, Action <EventHandler> unsubscribeClosingEvent) { var target = new RemoteTarget(computerName, RemotePowerShellUtils.CreatePSCredential(username, password)); string script = RemotePowerShellUtils.GetEmbeddedFile(StartPsFilePath); _closingEventHandler = (se, e) => Stop(); subscribeClosingEvent(_closingEventHandler); _powerShellTask = ExecuteScript(target, script, unsubscribeClosingEvent); }
/// <summary> /// Start the session and start the remote tool. /// This starts a backgroud task and leave it running till it is cancelled or stopped. /// </summary> /// <param name="computerName">The ipaddress of debugging target machine.</param> /// <param name="username">The username for authentication.</param> /// <param name="password">The password for authentication.</param> /// <param name="subscribeClosingEvent">The method to subscribe to solution closing event.</param> /// <param name="unsubscribeClosingEvent">The method to unsubscribe solution closing event.</param> public RemoteToolSession( string computerName, string username, string password, Action <EventHandler> subscribeClosingEvent, Action <EventHandler> unsubscribeClosingEvent) { var target = new RemoteTarget(computerName, RemotePowerShellUtils.CreatePSCredential(username, password)); string script = RemotePowerShellUtils.GetEmbeddedFile(StartPsFilePath); _closingEventHandler = (se, e) => Stop(); subscribeClosingEvent(_closingEventHandler); _powerShellTask = Task.Run(() => { try { target.EnterSessionExecute(script, _cancelTokenSource.Token); } finally { unsubscribeClosingEvent(_closingEventHandler); } }); }