From 7c761d557489d59c1e70de5c855f2260a20f79b5 Mon Sep 17 00:00:00 2001 From: Justin Dearing Date: Tue, 15 Jul 2008 16:58:17 +0000 Subject: [PATCH] Project icons in the Projects pad now have a new context menu item that will open the folder where the projects output binaries are placed. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@3228 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- AddIns/ICSharpCode.SharpDevelop.addin | 3 +++ .../Src/Commands/ProjectMenuCommands.cs | 22 +++++++++++++++++++ .../Project/Src/Project/CompilableProject.cs | 15 +++++++++++++ 3 files changed, 40 insertions(+) diff --git a/AddIns/ICSharpCode.SharpDevelop.addin b/AddIns/ICSharpCode.SharpDevelop.addin index 688c8c91a9..d091d48bcb 100644 --- a/AddIns/ICSharpCode.SharpDevelop.addin +++ b/AddIns/ICSharpCode.SharpDevelop.addin @@ -340,6 +340,9 @@ + diff --git a/src/Main/Base/Project/Src/Commands/ProjectMenuCommands.cs b/src/Main/Base/Project/Src/Commands/ProjectMenuCommands.cs index 28445f429e..e3299e5343 100644 --- a/src/Main/Base/Project/Src/Commands/ProjectMenuCommands.cs +++ b/src/Main/Base/Project/Src/Commands/ProjectMenuCommands.cs @@ -85,4 +85,26 @@ namespace ICSharpCode.SharpDevelop.Project.Commands Process.Start(psi); } } + + /// + /// Opens the projects output folder in an explorer window. + /// + public class OpenProjectOutputFolder : AbstractMenuCommand + { + public override void Run() + { + CompilableProject project = ProjectService.CurrentProject as CompilableProject; + if (project == null) { + return; + } + + // Explorer does not handle relative paths as a command line argument properly + string outputFolder = project.OutputFullPath; + if (!Directory.Exists(outputFolder)) { + Directory.CreateDirectory(outputFolder); + } + + Process.Start(outputFolder); + } + } } diff --git a/src/Main/Base/Project/Src/Project/CompilableProject.cs b/src/Main/Base/Project/Src/Project/CompilableProject.cs index fda9433967..8f4b16901c 100644 --- a/src/Main/Base/Project/Src/Project/CompilableProject.cs +++ b/src/Main/Base/Project/Src/Project/CompilableProject.cs @@ -163,6 +163,9 @@ namespace ICSharpCode.SharpDevelop.Project set { SetProperty("RootNamespace", value); } } + /// + /// The full path of the assembly generated by the project. + /// public override string OutputAssemblyFullPath { get { string outputPath = GetEvaluatedProperty("OutputPath") ?? ""; @@ -170,6 +173,18 @@ namespace ICSharpCode.SharpDevelop.Project } } + /// + /// The full path of the folder where the project's primary output files go. + /// + public string OutputFullPath { + get { + string outputPath = GetEvaluatedProperty("OutputPath"); + // Path.GetFullPath() cleans up any back references. + // e.g. C:\windows\system32\..\system becomes C:\windows\system + return Path.GetFullPath(Path.Combine(Directory, outputPath)); + } + } + [Browsable(false)] public OutputType OutputType { get {