Browse Source

Use the Environment to get the ProgramFiles location;

Save Port when using IIS EXpress
pull/15/head
Eusebiu Marcu 15 years ago
parent
commit
de9fcd67de
  1. 4
      src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs
  2. 6
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/WebProjectOptions/WebProjectOptions.cs
  3. 4
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/WebProjectOptions/WebProjectOptionsPanel.xaml
  4. 89
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/WebProjectOptions/WebProjectOptionsPanel.xaml.cs
  5. 23
      src/Main/Base/Project/Src/Services/WebProjectService/WebProjectService.cs

4
src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs

@ -166,7 +166,7 @@ namespace ICSharpCode.SharpDevelop.Services
if (options.Data.WebServer == WebServer.IISExpress) { if (options.Data.WebServer == WebServer.IISExpress) {
// start IIS express and attach to it // start IIS express and attach to it
if (WebProjectService.IISVersion == IISVersion.IISExpress) if (WebProjectService.IISVersion == IISVersion.IISExpress)
System.Diagnostics.Process.Start(WebProjectService.IIS_EXPRESS_PROCESS_LOCATION); System.Diagnostics.Process.Start(WebProjectService.IIISExpressProcessLocation);
else { else {
MessageService.ShowError("${res:ICSharpCode.WepProjectOptionsPanel.NoProjectUrlOrProgramAction}"); MessageService.ShowError("${res:ICSharpCode.WepProjectOptionsPanel.NoProjectUrlOrProgramAction}");
return; return;
@ -302,7 +302,7 @@ namespace ICSharpCode.SharpDevelop.Services
if (options.Data.WebServer == WebServer.IISExpress) { if (options.Data.WebServer == WebServer.IISExpress) {
// start IIS express // start IIS express
if (WebProjectService.IISVersion == IISVersion.IISExpress) if (WebProjectService.IISVersion == IISVersion.IISExpress)
System.Diagnostics.Process.Start(WebProjectService.IIS_EXPRESS_PROCESS_LOCATION); System.Diagnostics.Process.Start(WebProjectService.IIISExpressProcessLocation);
else { else {
MessageService.ShowError("${res:ICSharpCode.WepProjectOptionsPanel.NoProjectUrlOrProgramAction}"); MessageService.ShowError("${res:ICSharpCode.WepProjectOptionsPanel.NoProjectUrlOrProgramAction}");
return; return;

6
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/WebProjectOptions/WebProjectOptions.cs

@ -62,10 +62,10 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
[DefaultValue(null)] [DefaultValue(null)]
public string ProjectUrl { get; set; } public string ProjectUrl { get; set; }
[DefaultValue(WebServer.None)]
public WebServer WebServer { get; set; }
[DefaultValue("8080")] [DefaultValue("8080")]
public string Port { get; set; } public string Port { get; set; }
[DefaultValue(WebServer.None)]
public WebServer WebServer { get; set; }
} }
} }

4
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/WebProjectOptions/WebProjectOptionsPanel.xaml

@ -22,7 +22,9 @@
<ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<TextBlock Text="{core:Localize ICSharpCode.WepProjectOptionsPanel.Port}"/> <TextBlock Text="{core:Localize ICSharpCode.WepProjectOptionsPanel.Port}"/>
<TextBox Grid.Column="1" x:Name="PortTextBox" PreviewTextInput="PortTextBox_PreviewTextInput" Text="8080"/> <TextBox Grid.Column="1" x:Name="PortTextBox"
PreviewTextInput="PortTextBox_PreviewTextInput" Text="8080"
KeyUp="PortTextBox_KeyUp" />
</Grid> </Grid>
</widgets:StackPanelWithSpacing> </widgets:StackPanelWithSpacing>
<!--IIS Local Server--> <!--IIS Local Server-->

89
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/WebProjectOptions/WebProjectOptionsPanel.xaml.cs

@ -3,9 +3,9 @@
using System; using System;
using System.IO; using System.IO;
using System.Web.Services.Description;
using System.Windows; using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project;
@ -24,39 +24,41 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
if (CurrentProjectDebugData == null) if (CurrentProjectDebugData == null)
CurrentProjectDebugData = new WebProjectDebugData(); CurrentProjectDebugData = new WebProjectDebugData();
Loaded += delegate(object sender, RoutedEventArgs e) { Loaded += OnLoaded;
}
if (!WebProjectService.IsIISInstalled) {
StatusLabel.Text = ResourceService.GetString("ICSharpCode.WepProjectOptionsPanel.IISNotFound"); void OnLoaded(object sender, RoutedEventArgs e)
return; {
} if (!WebProjectService.IsIISInstalled) {
StatusLabel.Text = ResourceService.GetString("ICSharpCode.WepProjectOptionsPanel.IISNotFound");
switch (CurrentProjectDebugData.WebServer) return;
{ }
case WebServer.IISExpress:
if (WebProjectService.IISVersion == IISVersion.IISExpress) { switch (CurrentProjectDebugData.WebServer)
UseIISExpress.IsChecked = true; {
IISExpressGroup.IsEnabled = true; case WebServer.IISExpress:
CreateVirtualDirectoryButton.IsEnabled = true; if (WebProjectService.IISVersion == IISVersion.IISExpress) {
PortTextBox.Text = CurrentProjectDebugData.Port; UseIISExpress.IsChecked = true;
} PortTextBox.Text = CurrentProjectDebugData.Port;
break;
case WebServer.IIS: SelectIISExpress();
if (WebProjectService.IISVersion == IISVersion.IIS5 || }
WebProjectService.IISVersion == IISVersion.IIS6 || break;
WebProjectService.IISVersion == IISVersion.IIS7 || case WebServer.IIS:
WebProjectService.IISVersion == IISVersion.IIS_Future) { if (WebProjectService.IISVersion == IISVersion.IIS5 ||
UseLocalIIS.IsChecked = true; WebProjectService.IISVersion == IISVersion.IIS6 ||
LocalIISGroup.IsEnabled = true; WebProjectService.IISVersion == IISVersion.IIS7 ||
CreateVirtualDirectoryButton.IsEnabled = true; WebProjectService.IISVersion == IISVersion.IIS_Future) {
ProjectUrl.Text = CurrentProjectDebugData.ProjectUrl ?? string.Empty; UseLocalIIS.IsChecked = true;
} ProjectUrl.Text = CurrentProjectDebugData.ProjectUrl ?? string.Empty;
break;
default: SelectLocalIIS();
// do nothing }
break; break;
} default:
}; // do nothing
break;
}
} }
WebProjectDebugData CurrentProjectDebugData { WebProjectDebugData CurrentProjectDebugData {
@ -96,6 +98,11 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
} }
void UseIISExpress_Click(object sender, RoutedEventArgs e) void UseIISExpress_Click(object sender, RoutedEventArgs e)
{
SelectIISExpress();
}
void SelectIISExpress()
{ {
WebProjectDebugData data = new WebProjectDebugData(); WebProjectDebugData data = new WebProjectDebugData();
data.WebServer = WebServer.IISExpress; data.WebServer = WebServer.IISExpress;
@ -118,6 +125,11 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
} }
void UseLocalIIS_Click(object sender, RoutedEventArgs e) void UseLocalIIS_Click(object sender, RoutedEventArgs e)
{
SelectLocalIIS();
}
void SelectLocalIIS()
{ {
WebProjectDebugData data = new WebProjectDebugData(); WebProjectDebugData data = new WebProjectDebugData();
data.WebServer = WebServer.IIS; data.WebServer = WebServer.IIS;
@ -182,5 +194,14 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
e.Handled = !AreAllValidNumericChars(e.Text); e.Handled = !AreAllValidNumericChars(e.Text);
base.OnPreviewTextInput(e); 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;
}
} }
} }

23
src/Main/Base/Project/Src/Services/WebProjectService/WebProjectService.cs

@ -46,11 +46,30 @@ namespace ICSharpCode.SharpDevelop.Project
const string FRAMEWORK32 = @"Framework\"; const string FRAMEWORK32 = @"Framework\";
const string FRAMEWORK64 = @"Framework64\"; const string FRAMEWORK64 = @"Framework64\";
/// <summary>
/// Gets &quot;iisexpress&quot; string.
/// </summary>
public const string IIS_EXPRESS_PROCESS_NAME = "iisexpress"; public const string IIS_EXPRESS_PROCESS_NAME = "iisexpress";
/// <summary>
/// Gets &quot;aspnet_wp&quot; string.
/// </summary>
public const string IIS_5_PROCESS_NAME = "aspnet_wp"; public const string IIS_5_PROCESS_NAME = "aspnet_wp";
/// <summary>
/// Gets &quot;w3wp&quot; string.
/// </summary>
public const string IIS_NEW_PROCESS_NAME = "w3wp"; public const string IIS_NEW_PROCESS_NAME = "w3wp";
public const string IIS_EXPRESS_PROCESS_LOCATION = @"C:\Program Files\IIS Express\iisexpress.exe"; /// <summary>
/// Gets IIS Express process location.
/// </summary>
public static string IIISExpressProcessLocation {
get {
return Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles) +
@"\IIS Express\iisexpress.exe";
}
}
/// <summary> /// <summary>
/// Gets the IIS worker process name. /// Gets the IIS worker process name.
@ -158,7 +177,7 @@ namespace ICSharpCode.SharpDevelop.Project
if (regValue > 4) if (regValue > 4)
return (IISVersion)regValue; return (IISVersion)regValue;
if (File.Exists(WebProjectService.IIS_EXPRESS_PROCESS_LOCATION)) if (File.Exists(IIISExpressProcessLocation))
return IISVersion.IISExpress; return IISVersion.IISExpress;
return IISVersion.None; return IISVersion.None;

Loading…
Cancel
Save