diff --git a/src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs b/src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs
index 9cd3ca17ba..a527cbc431 100644
--- a/src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs
+++ b/src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs
@@ -166,7 +166,7 @@ namespace ICSharpCode.SharpDevelop.Services
if (options.Data.WebServer == WebServer.IISExpress) {
// start IIS express and attach to it
if (WebProjectService.IISVersion == IISVersion.IISExpress)
- System.Diagnostics.Process.Start(WebProjectService.IIS_EXPRESS_PROCESS_LOCATION);
+ System.Diagnostics.Process.Start(WebProjectService.IIISExpressProcessLocation);
else {
MessageService.ShowError("${res:ICSharpCode.WepProjectOptionsPanel.NoProjectUrlOrProgramAction}");
return;
@@ -302,7 +302,7 @@ namespace ICSharpCode.SharpDevelop.Services
if (options.Data.WebServer == WebServer.IISExpress) {
// start IIS express
if (WebProjectService.IISVersion == IISVersion.IISExpress)
- System.Diagnostics.Process.Start(WebProjectService.IIS_EXPRESS_PROCESS_LOCATION);
+ System.Diagnostics.Process.Start(WebProjectService.IIISExpressProcessLocation);
else {
MessageService.ShowError("${res:ICSharpCode.WepProjectOptionsPanel.NoProjectUrlOrProgramAction}");
return;
diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/WebProjectOptions/WebProjectOptions.cs b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/WebProjectOptions/WebProjectOptions.cs
index 9af85e54c7..b7b9b8ef9b 100644
--- a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/WebProjectOptions/WebProjectOptions.cs
+++ b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/WebProjectOptions/WebProjectOptions.cs
@@ -62,10 +62,10 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
[DefaultValue(null)]
public string ProjectUrl { get; set; }
- [DefaultValue(WebServer.None)]
- public WebServer WebServer { get; set; }
-
[DefaultValue("8080")]
public string Port { get; set; }
+
+ [DefaultValue(WebServer.None)]
+ public WebServer WebServer { get; set; }
}
}
diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/WebProjectOptions/WebProjectOptionsPanel.xaml b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/WebProjectOptions/WebProjectOptionsPanel.xaml
index f8154a4a4e..80c75a1949 100644
--- a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/WebProjectOptions/WebProjectOptionsPanel.xaml
+++ b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/WebProjectOptions/WebProjectOptionsPanel.xaml
@@ -22,7 +22,9 @@
-
+
diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/WebProjectOptions/WebProjectOptionsPanel.xaml.cs b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/WebProjectOptions/WebProjectOptionsPanel.xaml.cs
index 030e9347b3..c51d0d381e 100644
--- a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/WebProjectOptions/WebProjectOptionsPanel.xaml.cs
+++ b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/WebProjectOptions/WebProjectOptionsPanel.xaml.cs
@@ -3,9 +3,9 @@
using System;
using System.IO;
+using System.Web.Services.Description;
using System.Windows;
using System.Windows.Controls;
-
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
@@ -24,39 +24,41 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
if (CurrentProjectDebugData == null)
CurrentProjectDebugData = new WebProjectDebugData();
- Loaded += delegate(object sender, RoutedEventArgs e) {
-
- if (!WebProjectService.IsIISInstalled) {
- StatusLabel.Text = ResourceService.GetString("ICSharpCode.WepProjectOptionsPanel.IISNotFound");
- return;
- }
-
- switch (CurrentProjectDebugData.WebServer)
- {
- case WebServer.IISExpress:
- if (WebProjectService.IISVersion == IISVersion.IISExpress) {
- UseIISExpress.IsChecked = true;
- IISExpressGroup.IsEnabled = true;
- CreateVirtualDirectoryButton.IsEnabled = true;
- PortTextBox.Text = CurrentProjectDebugData.Port;
- }
- break;
- case WebServer.IIS:
- if (WebProjectService.IISVersion == IISVersion.IIS5 ||
- WebProjectService.IISVersion == IISVersion.IIS6 ||
- WebProjectService.IISVersion == IISVersion.IIS7 ||
- WebProjectService.IISVersion == IISVersion.IIS_Future) {
- UseLocalIIS.IsChecked = true;
- LocalIISGroup.IsEnabled = true;
- CreateVirtualDirectoryButton.IsEnabled = true;
- ProjectUrl.Text = CurrentProjectDebugData.ProjectUrl ?? string.Empty;
- }
- break;
- default:
- // do nothing
- break;
- }
- };
+ Loaded += OnLoaded;
+ }
+
+ void OnLoaded(object sender, RoutedEventArgs e)
+ {
+ if (!WebProjectService.IsIISInstalled) {
+ StatusLabel.Text = ResourceService.GetString("ICSharpCode.WepProjectOptionsPanel.IISNotFound");
+ return;
+ }
+
+ switch (CurrentProjectDebugData.WebServer)
+ {
+ case WebServer.IISExpress:
+ if (WebProjectService.IISVersion == IISVersion.IISExpress) {
+ UseIISExpress.IsChecked = true;
+ PortTextBox.Text = CurrentProjectDebugData.Port;
+
+ SelectIISExpress();
+ }
+ break;
+ case WebServer.IIS:
+ if (WebProjectService.IISVersion == IISVersion.IIS5 ||
+ WebProjectService.IISVersion == IISVersion.IIS6 ||
+ WebProjectService.IISVersion == IISVersion.IIS7 ||
+ WebProjectService.IISVersion == IISVersion.IIS_Future) {
+ UseLocalIIS.IsChecked = true;
+ ProjectUrl.Text = CurrentProjectDebugData.ProjectUrl ?? string.Empty;
+
+ SelectLocalIIS();
+ }
+ break;
+ default:
+ // do nothing
+ break;
+ }
}
WebProjectDebugData CurrentProjectDebugData {
@@ -96,6 +98,11 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
}
void UseIISExpress_Click(object sender, RoutedEventArgs e)
+ {
+ SelectIISExpress();
+ }
+
+ void SelectIISExpress()
{
WebProjectDebugData data = new WebProjectDebugData();
data.WebServer = WebServer.IISExpress;
@@ -118,6 +125,11 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
}
void UseLocalIIS_Click(object sender, RoutedEventArgs e)
+ {
+ SelectLocalIIS();
+ }
+
+ void SelectLocalIIS()
{
WebProjectDebugData data = new WebProjectDebugData();
data.WebServer = WebServer.IIS;
@@ -182,5 +194,14 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
e.Handled = !AreAllValidNumericChars(e.Text);
base.OnPreviewTextInput(e);
}
+
+ void PortTextBox_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
+ {
+ WebProjectDebugData data = new WebProjectDebugData();
+ data.WebServer = WebServer.IISExpress;
+ data.Port = PortTextBox.Text;
+ data.ProjectUrl = string.Format(@"http://localhost:{0}/" + ProjectService.CurrentProject.Name, PortTextBox.Text);
+ CurrentProjectDebugData = data;
+ }
}
}
\ No newline at end of file
diff --git a/src/Main/Base/Project/Src/Services/WebProjectService/WebProjectService.cs b/src/Main/Base/Project/Src/Services/WebProjectService/WebProjectService.cs
index c8c1e238fd..443d290136 100644
--- a/src/Main/Base/Project/Src/Services/WebProjectService/WebProjectService.cs
+++ b/src/Main/Base/Project/Src/Services/WebProjectService/WebProjectService.cs
@@ -46,11 +46,30 @@ namespace ICSharpCode.SharpDevelop.Project
const string FRAMEWORK32 = @"Framework\";
const string FRAMEWORK64 = @"Framework64\";
+ ///
+ /// Gets "iisexpress" string.
+ ///
public const string IIS_EXPRESS_PROCESS_NAME = "iisexpress";
+
+ ///
+ /// Gets "aspnet_wp" string.
+ ///
public const string IIS_5_PROCESS_NAME = "aspnet_wp";
+
+ ///
+ /// Gets "w3wp" string.
+ ///
public const string IIS_NEW_PROCESS_NAME = "w3wp";
- public const string IIS_EXPRESS_PROCESS_LOCATION = @"C:\Program Files\IIS Express\iisexpress.exe";
+ ///
+ /// Gets IIS Express process location.
+ ///
+ public static string IIISExpressProcessLocation {
+ get {
+ return Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles) +
+ @"\IIS Express\iisexpress.exe";
+ }
+ }
///
/// Gets the IIS worker process name.
@@ -158,7 +177,7 @@ namespace ICSharpCode.SharpDevelop.Project
if (regValue > 4)
return (IISVersion)regValue;
- if (File.Exists(WebProjectService.IIS_EXPRESS_PROCESS_LOCATION))
+ if (File.Exists(IIISExpressProcessLocation))
return IISVersion.IISExpress;
return IISVersion.None;