From 7de9bdb8659d0742ee56e85bc970e5ebe336cf98 Mon Sep 17 00:00:00 2001 From: Arian Kulp Date: Tue, 31 Oct 2017 17:55:25 -0700 Subject: [PATCH] v1.2 Fixed issue with locating paths with spaces, updated icon --- README.md | 17 ++++++++++++++--- Solution/Package/Package.csproj | 14 +++++++------- Solution/Package/Properties/AssemblyInfo.cs | 4 ++-- .../Resources/StringDebuggerPackage.ico | Bin 428446 -> 0 bytes Solution/Package/Resources/noun_586565_cc.ico | Bin 0 -> 370070 bytes Solution/Package/source.extension.vsixmanifest | 4 ++-- .../Properties/AssemblyInfo.cs | 4 ++-- .../StringOpenFileDebuggerExtension.cs | 9 ++++++--- 8 files changed, 33 insertions(+), 19 deletions(-) delete mode 100644 Solution/Package/Resources/StringDebuggerPackage.ico create mode 100644 Solution/Package/Resources/noun_586565_cc.ico diff --git a/README.md b/README.md index 7f7d53c..d324b41 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,28 @@ -StringAsFilenameDebuggerVisualizer +Debugger Visualizer Pack by Arian ================================== Arian T. Kulp ------------- -Debugger visualizers for Visual Studio 2017 to open/view files by taking a string +Debugger Visualizer Pack by Arian for Visual Studio 2017 lets you open/view files by taking a string variable value as the filename. Install using prebuilt VSIX or install manually by copying the built DLL (ArianKulp.DebuggerExtensions.dll) to \$UserProfileStudio 2017. +You can also add this extension from the **Tools | Extensions and Updates** menu +in Visual Studio or from the [Visual Studio Gallery](https://marketplace.visualstudio.com/items?itemName=ArianKulp.DebuggerVisualizerPackbyArian). + Note, this actually adds multiple visualizers so you can locate the file in Windows Explorer, open the file in Visual Studio (without adding it to the project/solution), or in Notepad. ### Release History +- v1.2 + + - Fixed issue with paths with spaces opening in Windows Explorer + - Added better icon + - v1.1 - Update to proper installation of visualizer via VSIX @@ -36,4 +44,7 @@ None at the moment - Possibly add option to save current string value into temp file and then open it -- Add option to Peek at file contents in current window \ No newline at end of file +- Add option to Peek at file contents in current window + +### Attributions +File Search icon by Chanut is Industries from the Noun Project \ No newline at end of file diff --git a/Solution/Package/Package.csproj b/Solution/Package/Package.csproj index dfbd695..20db114 100644 --- a/Solution/Package/Package.csproj +++ b/Solution/Package/Package.csproj @@ -12,7 +12,7 @@ Key.snk - Resources\StringDebuggerPackage.ico + Resources\noun_586565_cc.ico @@ -62,12 +62,6 @@ Designer - - - Always - true - - False @@ -158,6 +152,12 @@ StringExtensions + + + Always + true + + diff --git a/Solution/Package/Properties/AssemblyInfo.cs b/Solution/Package/Properties/AssemblyInfo.cs index 44ce514..ded7d2f 100644 --- a/Solution/Package/Properties/AssemblyInfo.cs +++ b/Solution/Package/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.1.0.0")] -[assembly: AssemblyFileVersion("1.1.0.0")] +[assembly: AssemblyVersion("1.2.0.0")] +[assembly: AssemblyFileVersion("1.2.0.0")] diff --git a/Solution/Package/Resources/StringDebuggerPackage.ico b/Solution/Package/Resources/StringDebuggerPackage.ico deleted file mode 100644 index d323b07fb8d8b417bfc12e7c46dea88bee17760c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428446 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

N3mPu2mM3; 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 F{y!1E%@hCt literal 0 HcmV?d00001 diff --git a/Solution/Package/source.extension.vsixmanifest b/Solution/Package/source.extension.vsixmanifest index c0b93c9..33eac61 100644 --- a/Solution/Package/source.extension.vsixmanifest +++ b/Solution/Package/source.extension.vsixmanifest @@ -1,10 +1,10 @@  - + Debugger Visualizer Pack by Arian Various debugging visualizers including open file from filename in string variable. - Resources\StringDebuggerPackage.ico + Resources\noun_586565_cc.ico debugger, string, visualizer, open file diff --git a/Solution/StringExtensions/Properties/AssemblyInfo.cs b/Solution/StringExtensions/Properties/AssemblyInfo.cs index c036cc1..6e474e7 100644 --- a/Solution/StringExtensions/Properties/AssemblyInfo.cs +++ b/Solution/StringExtensions/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.1.0.0")] -[assembly: AssemblyFileVersion("1.1.0.0")] +[assembly: AssemblyVersion("1.2.0.0")] +[assembly: AssemblyFileVersion("1.2.0.0")] diff --git a/Solution/StringExtensions/StringOpenFileDebuggerExtension.cs b/Solution/StringExtensions/StringOpenFileDebuggerExtension.cs index fca8c34..98aca6f 100644 --- a/Solution/StringExtensions/StringOpenFileDebuggerExtension.cs +++ b/Solution/StringExtensions/StringOpenFileDebuggerExtension.cs @@ -68,15 +68,18 @@ override protected void Show(IDialogVisualizerService windowService, IVisualizer if (fn != null && ServiceProvider.GlobalProvider.GetService(typeof(DTE)) is DTE2 dte2) { - if (!File.Exists(fn)) + if (!File.Exists(fn) && !Directory.Exists(fn)) { - ShowError("File does not exist"); + ShowError("File/folder does not exist"); return; } + var attr = File.GetAttributes(fn); + var isFolder = (attr & FileAttributes.Directory) != 0; + // combine the arguments together // it doesn't matter if there is a space after ',' - string argument = "/select, \"" + fn + "\""; + string argument = isFolder ? $"\"{fn}\"" : $"/select, \"{fn}\""; System.Diagnostics.Process.Start("explorer.exe", argument); }