From d3aa302af6ce378ed8e6aa8e2469e788f452fe33 Mon Sep 17 00:00:00 2001 From: lindexi Date: Mon, 13 Dec 2021 09:25:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E7=A9=BA=E7=99=BD=E7=9A=84?= =?UTF-8?q?=E6=96=B0=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- EncodingNormalior.sln | 38 ++- EncodingNormalizerVsix/EncodingNormalizer.cs | 308 ++++++++++++++++++ .../EncodingNormalizerPackage.vsct | 174 ++++++++++ .../EncodingNormalizerVsix.csproj | 114 +++++++ .../EncodingNormalizerVsixPackage.cs | 59 ++++ .../Properties/AssemblyInfo.cs | 33 ++ .../Resources/ConvertFileEncoding.png | Bin 0 -> 259 bytes .../Resources/EncodingNormalizer.png | Bin 0 -> 1172 bytes .../Resources/EncodingNormalizerPackage.ico | Bin 0 -> 428446 bytes .../Resources/EncodingNormalizerPackage.png | Bin 0 -> 1172 bytes EncodingNormalizerVsix/Resources/Icon.ico | Bin 0 -> 188500 bytes EncodingNormalizerVsix/Resources/Logo.png | Bin 0 -> 22986 bytes ...346\210\252\345\233\27620170114120751.png" | Bin 0 -> 2411 bytes ...6\210\252\345\233\2762017011412075116.png" | Bin 0 -> 641 bytes .../code_711px_1157693_easyicon.net.png | Bin 0 -> 8978 bytes .../Resources/code_711px_16_easyicon.net.png | Bin 0 -> 379 bytes .../source.extension.vsixmanifest | 25 ++ 17 files changed, 748 insertions(+), 3 deletions(-) create mode 100644 EncodingNormalizerVsix/EncodingNormalizer.cs create mode 100644 EncodingNormalizerVsix/EncodingNormalizerPackage.vsct create mode 100644 EncodingNormalizerVsix/EncodingNormalizerVsix.csproj create mode 100644 EncodingNormalizerVsix/EncodingNormalizerVsixPackage.cs create mode 100644 EncodingNormalizerVsix/Properties/AssemblyInfo.cs create mode 100644 EncodingNormalizerVsix/Resources/ConvertFileEncoding.png create mode 100644 EncodingNormalizerVsix/Resources/EncodingNormalizer.png create mode 100644 EncodingNormalizerVsix/Resources/EncodingNormalizerPackage.ico create mode 100644 EncodingNormalizerVsix/Resources/EncodingNormalizerPackage.png create mode 100644 EncodingNormalizerVsix/Resources/Icon.ico create mode 100644 EncodingNormalizerVsix/Resources/Logo.png create mode 100644 "EncodingNormalizerVsix/Resources/QQ\346\210\252\345\233\27620170114120751.png" create mode 100644 "EncodingNormalizerVsix/Resources/QQ\346\210\252\345\233\2762017011412075116.png" create mode 100644 EncodingNormalizerVsix/Resources/code_711px_1157693_easyicon.net.png create mode 100644 EncodingNormalizerVsix/Resources/code_711px_16_easyicon.net.png create mode 100644 EncodingNormalizerVsix/source.extension.vsixmanifest diff --git a/EncodingNormalior.sln b/EncodingNormalior.sln index 725ff87..5098645 100644 --- a/EncodingNormalior.sln +++ b/EncodingNormalior.sln @@ -1,9 +1,9 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.26228.9 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EncodingNormalior", "EncodingNormalior\EncodingNormalior.csproj", "{B4D74A9C-F593-4DD9-9CE6-FF12259E6337}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EncodingNormalior", "EncodingNormalior\EncodingNormalior.csproj", "{B4D74A9C-F593-4DD9-9CE6-FF12259E6337}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EncodingNormalizerVsx", "EncodingNormalizerVsx\EncodingNormalizerVsx.csproj", "{5C4AABAC-646E-4CA0-822A-0A3D18A296C2}" EndProject @@ -13,32 +13,64 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EncodingUtf8AndGBKDifferent EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EncodingNormalior.WPF", "EncodingNormalior.WPF\EncodingNormalior.WPF.csproj", "{DB0F1F5D-E82F-42A7-963F-4F072CAEBFAE}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EncodingNormalizerVsix", "EncodingNormalizerVsix\EncodingNormalizerVsix.csproj", "{24B5AD6C-70C2-424D-B960-CD7513FA7695}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {B4D74A9C-F593-4DD9-9CE6-FF12259E6337}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B4D74A9C-F593-4DD9-9CE6-FF12259E6337}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B4D74A9C-F593-4DD9-9CE6-FF12259E6337}.Debug|x86.ActiveCfg = Debug|Any CPU + {B4D74A9C-F593-4DD9-9CE6-FF12259E6337}.Debug|x86.Build.0 = Debug|Any CPU {B4D74A9C-F593-4DD9-9CE6-FF12259E6337}.Release|Any CPU.ActiveCfg = Release|Any CPU {B4D74A9C-F593-4DD9-9CE6-FF12259E6337}.Release|Any CPU.Build.0 = Release|Any CPU + {B4D74A9C-F593-4DD9-9CE6-FF12259E6337}.Release|x86.ActiveCfg = Release|Any CPU + {B4D74A9C-F593-4DD9-9CE6-FF12259E6337}.Release|x86.Build.0 = Release|Any CPU {5C4AABAC-646E-4CA0-822A-0A3D18A296C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5C4AABAC-646E-4CA0-822A-0A3D18A296C2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5C4AABAC-646E-4CA0-822A-0A3D18A296C2}.Debug|x86.ActiveCfg = Debug|Any CPU + {5C4AABAC-646E-4CA0-822A-0A3D18A296C2}.Debug|x86.Build.0 = Debug|Any CPU {5C4AABAC-646E-4CA0-822A-0A3D18A296C2}.Release|Any CPU.ActiveCfg = Release|Any CPU {5C4AABAC-646E-4CA0-822A-0A3D18A296C2}.Release|Any CPU.Build.0 = Release|Any CPU + {5C4AABAC-646E-4CA0-822A-0A3D18A296C2}.Release|x86.ActiveCfg = Release|Any CPU + {5C4AABAC-646E-4CA0-822A-0A3D18A296C2}.Release|x86.Build.0 = Release|Any CPU {388DB615-88E4-4306-B941-DC3C81B06194}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {388DB615-88E4-4306-B941-DC3C81B06194}.Debug|Any CPU.Build.0 = Debug|Any CPU + {388DB615-88E4-4306-B941-DC3C81B06194}.Debug|x86.ActiveCfg = Debug|Any CPU + {388DB615-88E4-4306-B941-DC3C81B06194}.Debug|x86.Build.0 = Debug|Any CPU {388DB615-88E4-4306-B941-DC3C81B06194}.Release|Any CPU.ActiveCfg = Release|Any CPU {388DB615-88E4-4306-B941-DC3C81B06194}.Release|Any CPU.Build.0 = Release|Any CPU + {388DB615-88E4-4306-B941-DC3C81B06194}.Release|x86.ActiveCfg = Release|Any CPU + {388DB615-88E4-4306-B941-DC3C81B06194}.Release|x86.Build.0 = Release|Any CPU {19184DC4-D745-451E-A3DA-9A827730E16A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {19184DC4-D745-451E-A3DA-9A827730E16A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {19184DC4-D745-451E-A3DA-9A827730E16A}.Debug|x86.ActiveCfg = Debug|Any CPU + {19184DC4-D745-451E-A3DA-9A827730E16A}.Debug|x86.Build.0 = Debug|Any CPU {19184DC4-D745-451E-A3DA-9A827730E16A}.Release|Any CPU.ActiveCfg = Release|Any CPU {19184DC4-D745-451E-A3DA-9A827730E16A}.Release|Any CPU.Build.0 = Release|Any CPU + {19184DC4-D745-451E-A3DA-9A827730E16A}.Release|x86.ActiveCfg = Release|Any CPU + {19184DC4-D745-451E-A3DA-9A827730E16A}.Release|x86.Build.0 = Release|Any CPU {DB0F1F5D-E82F-42A7-963F-4F072CAEBFAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DB0F1F5D-E82F-42A7-963F-4F072CAEBFAE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DB0F1F5D-E82F-42A7-963F-4F072CAEBFAE}.Debug|x86.ActiveCfg = Debug|Any CPU + {DB0F1F5D-E82F-42A7-963F-4F072CAEBFAE}.Debug|x86.Build.0 = Debug|Any CPU {DB0F1F5D-E82F-42A7-963F-4F072CAEBFAE}.Release|Any CPU.ActiveCfg = Release|Any CPU {DB0F1F5D-E82F-42A7-963F-4F072CAEBFAE}.Release|Any CPU.Build.0 = Release|Any CPU + {DB0F1F5D-E82F-42A7-963F-4F072CAEBFAE}.Release|x86.ActiveCfg = Release|Any CPU + {DB0F1F5D-E82F-42A7-963F-4F072CAEBFAE}.Release|x86.Build.0 = Release|Any CPU + {24B5AD6C-70C2-424D-B960-CD7513FA7695}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {24B5AD6C-70C2-424D-B960-CD7513FA7695}.Debug|Any CPU.Build.0 = Debug|Any CPU + {24B5AD6C-70C2-424D-B960-CD7513FA7695}.Debug|x86.ActiveCfg = Debug|x86 + {24B5AD6C-70C2-424D-B960-CD7513FA7695}.Debug|x86.Build.0 = Debug|x86 + {24B5AD6C-70C2-424D-B960-CD7513FA7695}.Release|Any CPU.ActiveCfg = Release|Any CPU + {24B5AD6C-70C2-424D-B960-CD7513FA7695}.Release|Any CPU.Build.0 = Release|Any CPU + {24B5AD6C-70C2-424D-B960-CD7513FA7695}.Release|x86.ActiveCfg = Release|x86 + {24B5AD6C-70C2-424D-B960-CD7513FA7695}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/EncodingNormalizerVsix/EncodingNormalizer.cs b/EncodingNormalizerVsix/EncodingNormalizer.cs new file mode 100644 index 0000000..93782d2 --- /dev/null +++ b/EncodingNormalizerVsix/EncodingNormalizer.cs @@ -0,0 +1,308 @@ +//------------------------------------------------------------------------------ +// +// Copyright (c) Company. All rights reserved. +// +//------------------------------------------------------------------------------ + +using EncodingNormalizerVsx.View; + +using EnvDTE; + +using EnvDTE80; + +using Microsoft.VisualStudio.Shell; + +using System; +using System.Collections.Generic; +using System.ComponentModel.Design; +using System.IO; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using System.Windows; + +using Window = System.Windows.Window; + +namespace EncodingNormalizerVsx +{ + /// + /// Command handler + /// + internal sealed class EncodingNormalizer + { + /// + /// Command ID. + /// + public const int CommandId = 0x0100; + + /// + /// Command menu group (command set GUID). + /// + public static readonly Guid CommandSet = new Guid("0640f5ce-e6bc-43ba-b45e-497d70819a20"); + + /// + /// VS Package that provides this command, not null. + /// + private AsyncPackage AsyncPackage { get; } + + private Window _conformWindow; + private Window _definitionWindow; + + /// + /// Initializes a new instance of the class. + /// Adds our command handlers for menu (commands must exist in the command table file) + /// + /// Owner package, not null. + private EncodingNormalizer(AsyncPackage package) + { + if (package == null) + { + throw new ArgumentNullException("package"); + } + + AsyncPackage = package; + + OleMenuCommandService commandService = ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService; + if (commandService != null) + { + CommandID menuCommandID = new CommandID(CommandSet, CommandId); + MenuCommand menuItem = new MenuCommand(EncodingNormalizerCallback, menuCommandID); + commandService.AddCommand(menuItem); + + CommandID convertCurrentFileSaveEncodingCommand = new CommandID(CommandSet, 0x0103); + MenuCommand convertCurrentEncodingMenuCommand = new MenuCommand(ConvertCurrentFileEncoding, convertCurrentFileSaveEncodingCommand); + commandService.AddCommand(convertCurrentEncodingMenuCommand); + + menuCommandID = new CommandID(CommandSet, 0x0101); + menuItem = new MenuCommand(MenuItemCallback, menuCommandID); + commandService.AddCommand(menuItem); + + //menuCommandID = new CommandID(CommandSet, 0x0102); + //menuItem = new MenuCommand(SaveEncoding, menuCommandID); + //commandService.AddCommand(menuItem); + } + } + +#pragma warning disable VSTHRD100 // 避免使用 Async Void 方法 + private async void ConvertCurrentFileEncoding(object sender, EventArgs e) +#pragma warning restore VSTHRD100 // 避免使用 Async Void 方法 + { + await AsyncPackage.JoinableTaskFactory.SwitchToMainThreadAsync(); + // 修改用户打开的文件的编码 + DTE dte = (DTE)ServiceProvider.GetService(typeof(DTE)); + Document document = dte.ActiveDocument; + string str = document.FullName; + + new ConvertFileEncodingPage(new FileInfo(str)).Show(); + } + + /// + /// Gets the instance of the command. + /// + public static EncodingNormalizer Instance { get; private set; } + + /// + /// Gets the service provider from the owner package. + /// + private IServiceProvider ServiceProvider => AsyncPackage; + +#pragma warning disable VSTHRD100 // 避免使用 Async Void 方法 + private async void EncodingNormalizerCallback(object sender, EventArgs e) +#pragma warning restore VSTHRD100 // 避免使用 Async Void 方法 + { + await AsyncPackage.JoinableTaskFactory.SwitchToMainThreadAsync(); + + DTE dte = (DTE)ServiceProvider.GetService(typeof(DTE)); + string file = dte.Solution.FullName; + List project = new List(); + + if (dte.Solution.Projects.Count > 0) + { + //try + //{ + int noLoadProjectCount = await TryParseProjectAsync(dte, project); + //} + // catch (NotImplementedException) + //{ + // MessageBox.Show("The project not loaded.", "项目还没有加载完成"); + // return; + //} + if (noLoadProjectCount > 0) + { + if (project.Count == 0) + { + MessageBox.Show("All project not loaded.", "全部项目都没有加载完成"); + return; + } + MessageBox.Show("存在" + noLoadProjectCount + "个工程没有加载"); + } + else + { + if (project.Count == 0) + { + MessageBox.Show("Cant find any project.", "没有发现工程"); + return; + } + } + } + else + { + MessageBox.Show("Cant find the solution.", "少年,听说你没有打开工程"); + return; + } + + ConformWindow(file, project); + } + + private async Task TryParseProjectAsync(DTE dte, List project) + { + await AsyncPackage.JoinableTaskFactory.SwitchToMainThreadAsync(); + + int noLoadProjectCount = 0; + + foreach (object temp in dte.Solution.Projects) + { + try + { + if (temp is Project tempProject) + { + if ((tempProject).Kind == ProjectKinds.vsProjectKindSolutionFolder) + { + foreach(var subProject in await GetSolutionFolderProjectsAsync(tempProject)) + { + var directory = await ParseProjectFolderAsync(subProject); + if (!string.IsNullOrEmpty(directory)) + { + project.Add(directory); + } + } + } + else + { + var directory = await ParseProjectFolderAsync(tempProject); + + project.Add(directory); + } + } + } + catch (NotImplementedException) + { + noLoadProjectCount++; + } + } + return noLoadProjectCount; + } + + private async Task ParseProjectFolderAsync(Project project) + { + await AsyncPackage.JoinableTaskFactory.SwitchToMainThreadAsync(); + string file = project.FullName; + if (!string.IsNullOrEmpty(file)) + { + return new FileInfo(file).Directory?.FullName; + } + return ""; + } + + private async Task> GetSolutionFolderProjectsAsync(Project solutionFolder) + { + await AsyncPackage.JoinableTaskFactory.SwitchToMainThreadAsync(); + + List project = new List(); + for (int i = 1; i <= solutionFolder.ProjectItems.Count; i++) + { + Project subProject = solutionFolder.ProjectItems.Item(i).SubProject; + if (subProject == null) + { + continue; + } + + // If this is another solution folder, do a recursive call, otherwise add + if (subProject.Kind == ProjectKinds.vsProjectKindSolutionFolder) + { + project.AddRange(await GetSolutionFolderProjectsAsync(subProject)); + } + else + { + project.Add(subProject); + } + } + return project; + } + + private void ConformWindow(string file, List project) + { + if (_conformWindow != null) + { + _conformWindow.Focus(); + _conformWindow.Show(); + return; + } + + string folder = ""; + if (!string.IsNullOrEmpty(file)) + { + folder = new FileInfo(file).Directory?.FullName; + } + Window window = new Window() + { + Width = 500, + Height = 500 + }; + ConformPage conformPage = new ConformPage(); + window.Content = conformPage; + window.Title = "编码规范工具"; + conformPage.Closing += (_s, _e) => + { + window.Close(); + _conformWindow = null; + }; + window.Closed += (_s, _e) => { _conformWindow = null; }; + conformPage.SolutionFolder = folder; + conformPage.Project = project; + window.Show(); + conformPage.InspectFolderEncoding(); + _conformWindow = window; + } + + /// + /// Initializes the singleton instance of the command. + /// + /// Owner package, not null. + public static void Initialize(AsyncPackage package) + { + Instance = new EncodingNormalizer(package); + } + + + /// + /// This function is the callback used to execute the command when the menu item is clicked. + /// See the constructor to see how the menu item is associated with this function using + /// OleMenuCommandService service and MenuCommand class. + /// + /// Event sender. + /// Event args. + private void MenuItemCallback(object sender, EventArgs e) + { + if (_definitionWindow != null) + { + _definitionWindow.Focus(); + _definitionWindow.Show(); + return; + } + Window window = new Window(); + DefinitionPage definitionPage = new DefinitionPage(); + definitionPage.Closing += (_s, _e) => + { + window.Close(); + _definitionWindow = null; + }; + window.Closed += (_s, _e) => { _definitionWindow = null; }; + window.Title = "编码规范工具设置"; + window.Content = definitionPage; + window.Show(); + + _definitionWindow = window; + } + } +} \ No newline at end of file diff --git a/EncodingNormalizerVsix/EncodingNormalizerPackage.vsct b/EncodingNormalizerVsix/EncodingNormalizerPackage.vsct new file mode 100644 index 0000000..f6aa455 --- /dev/null +++ b/EncodingNormalizerVsix/EncodingNormalizerPackage.vsct @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + 规范编码 + + EncodingNormalizer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/EncodingNormalizerVsix/EncodingNormalizerVsix.csproj b/EncodingNormalizerVsix/EncodingNormalizerVsix.csproj new file mode 100644 index 0000000..da1859d --- /dev/null +++ b/EncodingNormalizerVsix/EncodingNormalizerVsix.csproj @@ -0,0 +1,114 @@ + + + + 17.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + Debug + AnyCPU + 2.0 + {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {24B5AD6C-70C2-424D-B960-CD7513FA7695} + Library + Properties + EncodingNormalizerVsix + EncodingNormalizerVsix + v4.7.2 + true + true + true + false + false + true + true + Program + $(DevEnvDir)devenv.exe + /rootsuffix Exp + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + Designer + + + + + + + + + + + + + + + + + + + + + Designer + + + + Always + + + Always + true + + + + Always + + + + + + + + + + {db0f1f5d-e82f-42a7-963f-4f072caebfae} + EncodingNormalior.WPF + + + {b4d74a9c-f593-4dd9-9ce6-ff12259e6337} + EncodingNormalior + + + + + + \ No newline at end of file diff --git a/EncodingNormalizerVsix/EncodingNormalizerVsixPackage.cs b/EncodingNormalizerVsix/EncodingNormalizerVsixPackage.cs new file mode 100644 index 0000000..07d55ff --- /dev/null +++ b/EncodingNormalizerVsix/EncodingNormalizerVsixPackage.cs @@ -0,0 +1,59 @@ +using EncodingNormalizerVsx; + +using Microsoft.VisualStudio.Shell; + +using System; +using System.Runtime.InteropServices; +using System.Threading; + +using Task = System.Threading.Tasks.Task; + +namespace EncodingNormalizerVsix +{ + /// + /// This is the class that implements the package exposed by this assembly. + /// + /// + /// + /// The minimum requirement for a class to be considered a valid package for Visual Studio + /// is to implement the IVsPackage interface and register itself with the shell. + /// This package uses the helper classes defined inside the Managed Package Framework (MPF) + /// to do it: it derives from the Package class that provides the implementation of the + /// IVsPackage interface and uses the registration attributes defined in the framework to + /// register itself and its components with the shell. These attributes tell the pkgdef creation + /// utility what data to put into .pkgdef file. + /// + /// + /// To get loaded into VS, the package must be referred by <Asset Type="Microsoft.VisualStudio.VsPackage" ...> in .vsixmanifest file. + /// + /// + [PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)] + [Guid(EncodingNormalizerVsixPackage.PackageGuidString)] + [ProvideMenuResource("Menus.ctmenu", 1)] + public sealed class EncodingNormalizerVsixPackage : AsyncPackage + { + /// + /// EncodingNormalizerVsixPackage GUID string. + /// + public const string PackageGuidString = "6eff3396-2f35-4842-b425-50fc18483070"; + + #region Package Members + + /// + /// Initialization of the package; this method is called right after the package is sited, so this is the place + /// where you can put all the initialization code that rely on services provided by VisualStudio. + /// + /// A cancellation token to monitor for initialization cancellation, which can occur when VS is shutting down. + /// A provider for progress updates. + /// A task representing the async work of package initialization, or an already completed task if there is none. Do not return null from this method. + protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress progress) + { + // When initialized asynchronously, the current thread may be a background thread at this point. + // Do any initialization that requires the UI thread after switching to the UI thread. + await this.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); + EncodingNormalizer.Initialize(this); + } + + #endregion + } +} diff --git a/EncodingNormalizerVsix/Properties/AssemblyInfo.cs b/EncodingNormalizerVsix/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..31ce177 --- /dev/null +++ b/EncodingNormalizerVsix/Properties/AssemblyInfo.cs @@ -0,0 +1,33 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("EncodingNormalizerVsix")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("EncodingNormalizerVsix")] +[assembly: AssemblyCopyright("")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// 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.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/EncodingNormalizerVsix/Resources/ConvertFileEncoding.png b/EncodingNormalizerVsix/Resources/ConvertFileEncoding.png new file mode 100644 index 0000000000000000000000000000000000000000..4f64e3d5d0baa80ab8407ca29fc6bc7518d7c434 GIT binary patch literal 259 zcmV+e0sQ`nP)~ zCU>YtY8nH>e@&LJ%wA*}0CBZM2O|TcCD{hRTuTcBB(E?qFlu89(EtDcU$Jj_t_za` zg$afWh>Z!HUZB{3gSC>^85tNga2fQU;r|W$=I5GZ1tNMn!5RjL#3K2Cfss)j?vnri zAKJA%S3pi^cn!ei1)>c&R6{QpKm+C{0|NsaDNzVg`=5c~2>^PW(ug+v1MmO<002ov JPDHLkV1h9vV+Q~L literal 0 HcmV?d00001 diff --git a/EncodingNormalizerVsix/Resources/EncodingNormalizer.png b/EncodingNormalizerVsix/Resources/EncodingNormalizer.png new file mode 100644 index 0000000000000000000000000000000000000000..b22d975cbf00eda60e37587614e0677d0bfb525d GIT binary patch literal 1172 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

N3mPu2mM3; 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 literal 0 HcmV?d00001 diff --git a/EncodingNormalizerVsix/Resources/Logo.png b/EncodingNormalizerVsix/Resources/Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8917167c579cf762cf396ceccde25d70b2947f37 GIT binary patch literal 22986 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

K6IvL{#X+Dc~AEOwER7L^PIM<$&>MV?$)h z2oi8SsLPbfvLc)z|G1>1stBzf_MU<4TEB!;zLk&{!x6mDE4YS8Wy^E7(dY4G5G`%| zb?nKEFyTkq-3y?5eXzs@>V>&lyy5wxz6-!R>IKPQlVmUMsHV?vPUI~rOtjxRw^$HT zX#ZBCy>c+m_epMtoZ|(PP|BmmufEKNmwi!uVP_V^7Q8B&yE{g2Wnb_9)zp`XW`Tc} z(K3w~o&7XP;S^&Tg#xVkQFrgAkc}5atj}LOxY*P)0y5sXNLL$uS-O2H%MaLt#dKCh+HjwRTUY3(I9;^`A1jp-MaR~Mf)jjLqn+<_MKoxaRGqLdfnT5_Z! z#D-RQWIlU6-RyW=jJe`cv13}Bcl#c@lR?jYKN{efo=25|mTp|HhaPec8BMLE zpHVb`QmiXXUj0JLWLK6`(%Z_{-stnmuNWE+yO3O%*_z1k4y<*;Q^b&tN0b=s9w;z5Tn~fWZ}(+P~M&NJ?vugz+8rPUr` zYt$cIX5QDQh7M~xPg|ZY=x2La!RMOk+TP^-ChS5_y-m7B>CDkLc$T%2SL!!b!K15hopk;{|TYebP&~ z?yfPl#34rIVZmdxfrwb=l(I-FFKtNzaAHBYOpBRO554YZHo6{+c*n0i2N!LmdZxH? zY%R|1Gc=Slo4w<8MexG_U0$SF_{!kpltH1WS9Tr>+BHH^y|4Jny41_w$k>_=Nj>43l<7Dv7iGYZ)t~p&>g`C& zB@oq^jp4mkfyRcmVz+CQPpvtYBl3(c>%5a>YVjTzHZX6;aHU#8%w^2Kby0yqV=2hZ`h!atK~UK#i*%!17uP!l2n@C+VGrKDeyV94mY3w^ieue=E|+OPR4Sp zE{lS*kk1#a4FWzysEV_tl;kG8vK_GCcN?$|jqb1DDTo z@#}Y4`@G}Vi{z{rR%>S!OW8D&Pw z5>hS*<594Guiyz;&c|a;(Co*I3b}Egfe%_NX~Pl1_XAmiB}Pl3`;DO-0uv`pfWJ4O*i!QsOLgBN$4pIC|$Y(72q)$V7c~5nZ7Nhfp*>{ z;53F^POPju_=_YJ&kS?X5bC^6jn0X$uXI&*-)hzk&=@FbUNr6W?$YXNuNR<=w>^g! zIW~D)iI(^1BF7_>J11XLOc&gu$?b39Zak2tS>=}RAo7BOn#+f(!IerjK2SC^^0eV6 znfftbtLv**tJ<#7r*wee_!h@1OU%6o$F6vp0Nm0Sr>0nHE}AdsS3Z0x)i757=;fEO)E!gU!J)RUx^!~mXL z5vjsI?s)!Ts#Kp=m>5gHM_az^Fy$G5?B9AXhkj)QUVdKQNa8nAAe`d>9Zds`Vl}&v F{{#BK^B({J literal 0 HcmV?d00001 diff --git "a/EncodingNormalizerVsix/Resources/QQ\346\210\252\345\233\27620170114120751.png" "b/EncodingNormalizerVsix/Resources/QQ\346\210\252\345\233\27620170114120751.png" new file mode 100644 index 0000000000000000000000000000000000000000..3b566992d1dcfea8265e6405cd4acaa29c8af9db GIT binary patch literal 2411 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 literal 0 HcmV?d00001 diff --git "a/EncodingNormalizerVsix/Resources/QQ\346\210\252\345\233\2762017011412075116.png" "b/EncodingNormalizerVsix/Resources/QQ\346\210\252\345\233\2762017011412075116.png" new file mode 100644 index 0000000000000000000000000000000000000000..9f01a51e452114acfe65c1d6d60a40df3cdf30a2 GIT binary patch literal 641 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 Z_yYsyLK + + + + Encoding normalize tool + Encoding normalize tool. 编码规范化工具,编码转换 + https://github.com/dotnet-campus/EncodingNormalior + Resources\code_711px_1157693_easyicon.net.png + Resources\code_711px_1157693_easyicon.net.png + + + + amd64 + + + + + + + + + + + +