Initial Import
This commit is contained in:
		
							
								
								
									
										351
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										351
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,351 @@ | |||||||
|  |  | ||||||
|  | # Created by https://www.gitignore.io/api/visualstudio | ||||||
|  | # Edit at https://www.gitignore.io/?templates=visualstudio | ||||||
|  |  | ||||||
|  | ### VisualStudio ### | ||||||
|  | ## Ignore Visual Studio temporary files, build results, and | ||||||
|  | ## files generated by popular Visual Studio add-ons. | ||||||
|  | ## | ||||||
|  | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore | ||||||
|  |  | ||||||
|  | # User-specific files | ||||||
|  | *.rsuser | ||||||
|  | *.suo | ||||||
|  | *.user | ||||||
|  | *.userosscache | ||||||
|  | *.sln.docstates | ||||||
|  |  | ||||||
|  | # User-specific files (MonoDevelop/Xamarin Studio) | ||||||
|  | *.userprefs | ||||||
|  |  | ||||||
|  | # Mono auto generated files | ||||||
|  | mono_crash.* | ||||||
|  |  | ||||||
|  | # Build results | ||||||
|  | [Dd]ebug/ | ||||||
|  | [Dd]ebugPublic/ | ||||||
|  | [Rr]elease/ | ||||||
|  | [Rr]eleases/ | ||||||
|  | x64/ | ||||||
|  | x86/ | ||||||
|  | [Aa][Rr][Mm]/ | ||||||
|  | [Aa][Rr][Mm]64/ | ||||||
|  | bld/ | ||||||
|  | [Bb]in/ | ||||||
|  | [Oo]bj/ | ||||||
|  | [Ll]og/ | ||||||
|  |  | ||||||
|  | # Visual Studio 2015/2017 cache/options directory | ||||||
|  | .vs/ | ||||||
|  | # Uncomment if you have tasks that create the project's static files in wwwroot | ||||||
|  | #wwwroot/ | ||||||
|  |  | ||||||
|  | # Visual Studio 2017 auto generated files | ||||||
|  | Generated\ Files/ | ||||||
|  |  | ||||||
|  | # MSTest test Results | ||||||
|  | [Tt]est[Rr]esult*/ | ||||||
|  | [Bb]uild[Ll]og.* | ||||||
|  |  | ||||||
|  | # NUNIT | ||||||
|  | *.VisualState.xml | ||||||
|  | TestResult.xml | ||||||
|  |  | ||||||
|  | # Build Results of an ATL Project | ||||||
|  | [Dd]ebugPS/ | ||||||
|  | [Rr]eleasePS/ | ||||||
|  | dlldata.c | ||||||
|  |  | ||||||
|  | # Benchmark Results | ||||||
|  | BenchmarkDotNet.Artifacts/ | ||||||
|  |  | ||||||
|  | # .NET Core | ||||||
|  | project.lock.json | ||||||
|  | project.fragment.lock.json | ||||||
|  | artifacts/ | ||||||
|  |  | ||||||
|  | # StyleCop | ||||||
|  | StyleCopReport.xml | ||||||
|  |  | ||||||
|  | # Files built by Visual Studio | ||||||
|  | *_i.c | ||||||
|  | *_p.c | ||||||
|  | *_h.h | ||||||
|  | *.ilk | ||||||
|  | *.meta | ||||||
|  | *.obj | ||||||
|  | *.iobj | ||||||
|  | *.pch | ||||||
|  | *.pdb | ||||||
|  | *.ipdb | ||||||
|  | *.pgc | ||||||
|  | *.pgd | ||||||
|  | *.rsp | ||||||
|  | *.sbr | ||||||
|  | *.tlb | ||||||
|  | *.tli | ||||||
|  | *.tlh | ||||||
|  | *.tmp | ||||||
|  | *.tmp_proj | ||||||
|  | *_wpftmp.csproj | ||||||
|  | *.log | ||||||
|  | *.vspscc | ||||||
|  | *.vssscc | ||||||
|  | .builds | ||||||
|  | *.pidb | ||||||
|  | *.svclog | ||||||
|  | *.scc | ||||||
|  |  | ||||||
|  | # Chutzpah Test files | ||||||
|  | _Chutzpah* | ||||||
|  |  | ||||||
|  | # Visual C++ cache files | ||||||
|  | ipch/ | ||||||
|  | *.aps | ||||||
|  | *.ncb | ||||||
|  | *.opendb | ||||||
|  | *.opensdf | ||||||
|  | *.sdf | ||||||
|  | *.cachefile | ||||||
|  | *.VC.db | ||||||
|  | *.VC.VC.opendb | ||||||
|  |  | ||||||
|  | # Visual Studio profiler | ||||||
|  | *.psess | ||||||
|  | *.vsp | ||||||
|  | *.vspx | ||||||
|  | *.sap | ||||||
|  |  | ||||||
|  | # Visual Studio Trace Files | ||||||
|  | *.e2e | ||||||
|  |  | ||||||
|  | # TFS 2012 Local Workspace | ||||||
|  | $tf/ | ||||||
|  |  | ||||||
|  | # Guidance Automation Toolkit | ||||||
|  | *.gpState | ||||||
|  |  | ||||||
|  | # ReSharper is a .NET coding add-in | ||||||
|  | _ReSharper*/ | ||||||
|  | *.[Rr]e[Ss]harper | ||||||
|  | *.DotSettings.user | ||||||
|  |  | ||||||
|  | # JustCode is a .NET coding add-in | ||||||
|  | .JustCode | ||||||
|  |  | ||||||
|  | # TeamCity is a build add-in | ||||||
|  | _TeamCity* | ||||||
|  |  | ||||||
|  | # DotCover is a Code Coverage Tool | ||||||
|  | *.dotCover | ||||||
|  |  | ||||||
|  | # AxoCover is a Code Coverage Tool | ||||||
|  | .axoCover/* | ||||||
|  | !.axoCover/settings.json | ||||||
|  |  | ||||||
|  | # Visual Studio code coverage results | ||||||
|  | *.coverage | ||||||
|  | *.coveragexml | ||||||
|  |  | ||||||
|  | # NCrunch | ||||||
|  | _NCrunch_* | ||||||
|  | .*crunch*.local.xml | ||||||
|  | nCrunchTemp_* | ||||||
|  |  | ||||||
|  | # MightyMoose | ||||||
|  | *.mm.* | ||||||
|  | AutoTest.Net/ | ||||||
|  |  | ||||||
|  | # Web workbench (sass) | ||||||
|  | .sass-cache/ | ||||||
|  |  | ||||||
|  | # Installshield output folder | ||||||
|  | [Ee]xpress/ | ||||||
|  |  | ||||||
|  | # DocProject is a documentation generator add-in | ||||||
|  | DocProject/buildhelp/ | ||||||
|  | DocProject/Help/*.HxT | ||||||
|  | DocProject/Help/*.HxC | ||||||
|  | DocProject/Help/*.hhc | ||||||
|  | DocProject/Help/*.hhk | ||||||
|  | DocProject/Help/*.hhp | ||||||
|  | DocProject/Help/Html2 | ||||||
|  | DocProject/Help/html | ||||||
|  |  | ||||||
|  | # Click-Once directory | ||||||
|  | publish/ | ||||||
|  |  | ||||||
|  | # Publish Web Output | ||||||
|  | *.[Pp]ublish.xml | ||||||
|  | *.azurePubxml | ||||||
|  | # Note: Comment the next line if you want to checkin your web deploy settings, | ||||||
|  | # but database connection strings (with potential passwords) will be unencrypted | ||||||
|  | *.pubxml | ||||||
|  | *.publishproj | ||||||
|  |  | ||||||
|  | # Microsoft Azure Web App publish settings. Comment the next line if you want to | ||||||
|  | # checkin your Azure Web App publish settings, but sensitive information contained | ||||||
|  | # in these scripts will be unencrypted | ||||||
|  | PublishScripts/ | ||||||
|  |  | ||||||
|  | # NuGet Packages | ||||||
|  | *.nupkg | ||||||
|  | # The packages folder can be ignored because of Package Restore | ||||||
|  | **/[Pp]ackages/* | ||||||
|  | # except build/, which is used as an MSBuild target. | ||||||
|  | !**/[Pp]ackages/build/ | ||||||
|  | # Uncomment if necessary however generally it will be regenerated when needed | ||||||
|  | #!**/[Pp]ackages/repositories.config | ||||||
|  | # NuGet v3's project.json files produces more ignorable files | ||||||
|  | *.nuget.props | ||||||
|  | *.nuget.targets | ||||||
|  |  | ||||||
|  | # Microsoft Azure Build Output | ||||||
|  | csx/ | ||||||
|  | *.build.csdef | ||||||
|  |  | ||||||
|  | # Microsoft Azure Emulator | ||||||
|  | ecf/ | ||||||
|  | rcf/ | ||||||
|  |  | ||||||
|  | # Windows Store app package directories and files | ||||||
|  | AppPackages/ | ||||||
|  | BundleArtifacts/ | ||||||
|  | Package.StoreAssociation.xml | ||||||
|  | _pkginfo.txt | ||||||
|  | *.appx | ||||||
|  | *.appxbundle | ||||||
|  | *.appxupload | ||||||
|  |  | ||||||
|  | # Visual Studio cache files | ||||||
|  | # files ending in .cache can be ignored | ||||||
|  | *.[Cc]ache | ||||||
|  | # but keep track of directories ending in .cache | ||||||
|  | !?*.[Cc]ache/ | ||||||
|  |  | ||||||
|  | # Others | ||||||
|  | ClientBin/ | ||||||
|  | ~$* | ||||||
|  | *~ | ||||||
|  | *.dbmdl | ||||||
|  | *.dbproj.schemaview | ||||||
|  | *.jfm | ||||||
|  | *.pfx | ||||||
|  | *.publishsettings | ||||||
|  | orleans.codegen.cs | ||||||
|  |  | ||||||
|  | # Including strong name files can present a security risk | ||||||
|  | # (https://github.com/github/gitignore/pull/2483#issue-259490424) | ||||||
|  | #*.snk | ||||||
|  |  | ||||||
|  | # Since there are multiple workflows, uncomment next line to ignore bower_components | ||||||
|  | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) | ||||||
|  | #bower_components/ | ||||||
|  |  | ||||||
|  | # RIA/Silverlight projects | ||||||
|  | Generated_Code/ | ||||||
|  |  | ||||||
|  | # Backup & report files from converting an old project file | ||||||
|  | # to a newer Visual Studio version. Backup files are not needed, | ||||||
|  | # because we have git ;-) | ||||||
|  | _UpgradeReport_Files/ | ||||||
|  | Backup*/ | ||||||
|  | UpgradeLog*.XML | ||||||
|  | UpgradeLog*.htm | ||||||
|  | ServiceFabricBackup/ | ||||||
|  | *.rptproj.bak | ||||||
|  |  | ||||||
|  | # SQL Server files | ||||||
|  | *.mdf | ||||||
|  | *.ldf | ||||||
|  | *.ndf | ||||||
|  |  | ||||||
|  | # Business Intelligence projects | ||||||
|  | *.rdl.data | ||||||
|  | *.bim.layout | ||||||
|  | *.bim_*.settings | ||||||
|  | *.rptproj.rsuser | ||||||
|  | *- Backup*.rdl | ||||||
|  |  | ||||||
|  | # Microsoft Fakes | ||||||
|  | FakesAssemblies/ | ||||||
|  |  | ||||||
|  | # GhostDoc plugin setting file | ||||||
|  | *.GhostDoc.xml | ||||||
|  |  | ||||||
|  | # Node.js Tools for Visual Studio | ||||||
|  | .ntvs_analysis.dat | ||||||
|  | node_modules/ | ||||||
|  |  | ||||||
|  | # Visual Studio 6 build log | ||||||
|  | *.plg | ||||||
|  |  | ||||||
|  | # Visual Studio 6 workspace options file | ||||||
|  | *.opt | ||||||
|  |  | ||||||
|  | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) | ||||||
|  | *.vbw | ||||||
|  |  | ||||||
|  | # Visual Studio LightSwitch build output | ||||||
|  | **/*.HTMLClient/GeneratedArtifacts | ||||||
|  | **/*.DesktopClient/GeneratedArtifacts | ||||||
|  | **/*.DesktopClient/ModelManifest.xml | ||||||
|  | **/*.Server/GeneratedArtifacts | ||||||
|  | **/*.Server/ModelManifest.xml | ||||||
|  | _Pvt_Extensions | ||||||
|  |  | ||||||
|  | # Paket dependency manager | ||||||
|  | .paket/paket.exe | ||||||
|  | paket-files/ | ||||||
|  |  | ||||||
|  | # FAKE - F# Make | ||||||
|  | .fake/ | ||||||
|  |  | ||||||
|  | # CodeRush personal settings | ||||||
|  | .cr/personal | ||||||
|  |  | ||||||
|  | # Python Tools for Visual Studio (PTVS) | ||||||
|  | __pycache__/ | ||||||
|  | *.pyc | ||||||
|  |  | ||||||
|  | # Cake - Uncomment if you are using it | ||||||
|  | # tools/** | ||||||
|  | # !tools/packages.config | ||||||
|  |  | ||||||
|  | # Tabs Studio | ||||||
|  | *.tss | ||||||
|  |  | ||||||
|  | # Telerik's JustMock configuration file | ||||||
|  | *.jmconfig | ||||||
|  |  | ||||||
|  | # BizTalk build output | ||||||
|  | *.btp.cs | ||||||
|  | *.btm.cs | ||||||
|  | *.odx.cs | ||||||
|  | *.xsd.cs | ||||||
|  |  | ||||||
|  | # OpenCover UI analysis results | ||||||
|  | OpenCover/ | ||||||
|  |  | ||||||
|  | # Azure Stream Analytics local run output | ||||||
|  | ASALocalRun/ | ||||||
|  |  | ||||||
|  | # MSBuild Binary and Structured Log | ||||||
|  | *.binlog | ||||||
|  |  | ||||||
|  | # NVidia Nsight GPU debugger configuration file | ||||||
|  | *.nvuser | ||||||
|  |  | ||||||
|  | # MFractors (Xamarin productivity tool) working folder | ||||||
|  | .mfractor/ | ||||||
|  |  | ||||||
|  | # Local History for Visual Studio | ||||||
|  | .localhistory/ | ||||||
|  |  | ||||||
|  | # BeatPulse healthcheck temp database | ||||||
|  | healthchecksdb | ||||||
|  |  | ||||||
|  | # Backup folder for Package Reference Convert tool in Visual Studio 2017 | ||||||
|  | MigrationBackup/ | ||||||
|  |  | ||||||
|  | # End of https://www.gitignore.io/api/visualstudio | ||||||
							
								
								
									
										25
									
								
								CPABuildEvents.sln
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								CPABuildEvents.sln
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  |  | ||||||
|  | Microsoft Visual Studio Solution File, Format Version 12.00 | ||||||
|  | # Visual Studio Version 16 | ||||||
|  | VisualStudioVersion = 16.0.28803.352 | ||||||
|  | MinimumVisualStudioVersion = 10.0.40219.1 | ||||||
|  | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CPABuildEvents", "CPABuildEvents\CPABuildEvents.csproj", "{2EDFEE33-2BAD-49D3-87AC-C59C42A099D0}" | ||||||
|  | EndProject | ||||||
|  | Global | ||||||
|  | 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||||
|  | 		Debug|Any CPU = Debug|Any CPU | ||||||
|  | 		Release|Any CPU = Release|Any CPU | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||||
|  | 		{2EDFEE33-2BAD-49D3-87AC-C59C42A099D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{2EDFEE33-2BAD-49D3-87AC-C59C42A099D0}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{2EDFEE33-2BAD-49D3-87AC-C59C42A099D0}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||||
|  | 		{2EDFEE33-2BAD-49D3-87AC-C59C42A099D0}.Release|Any CPU.Build.0 = Release|Any CPU | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(SolutionProperties) = preSolution | ||||||
|  | 		HideSolutionNode = FALSE | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(ExtensibilityGlobals) = postSolution | ||||||
|  | 		SolutionGuid = {24B05F37-9539-484D-A83F-FF5F970ACE0D} | ||||||
|  | 	EndGlobalSection | ||||||
|  | EndGlobal | ||||||
							
								
								
									
										128
									
								
								CPABuildEvents/BuildEventsPackage.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								CPABuildEvents/BuildEventsPackage.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,128 @@ | |||||||
|  | using System; | ||||||
|  | using System.Collections.ObjectModel; | ||||||
|  | using System.ComponentModel.Design; | ||||||
|  | using System.Diagnostics; | ||||||
|  | using System.Diagnostics.CodeAnalysis; | ||||||
|  | using System.Globalization; | ||||||
|  | using System.IO; | ||||||
|  | using System.Management.Automation; | ||||||
|  | using System.Runtime.InteropServices; | ||||||
|  | using System.Threading; | ||||||
|  | using System.Threading.Tasks; | ||||||
|  | using EnvDTE; | ||||||
|  | using EnvDTE80; | ||||||
|  | using Microsoft.VisualStudio; | ||||||
|  | using Microsoft.VisualStudio.OLE.Interop; | ||||||
|  | using Microsoft.VisualStudio.PlatformUI; | ||||||
|  | using Microsoft.VisualStudio.Shell; | ||||||
|  | using Microsoft.VisualStudio.Shell.Interop; | ||||||
|  | using Microsoft.Win32; | ||||||
|  | using Task = System.Threading.Tasks.Task; | ||||||
|  |  | ||||||
|  | namespace CPABuildEvents | ||||||
|  | { | ||||||
|  |     /// <summary> | ||||||
|  |     /// This is the class that implements the package exposed by this assembly. | ||||||
|  |     /// </summary> | ||||||
|  |     /// <remarks> | ||||||
|  |     /// <para> | ||||||
|  |     /// 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. | ||||||
|  |     /// </para> | ||||||
|  |     /// <para> | ||||||
|  |     /// To get loaded into VS, the package must be referred by <Asset Type="Microsoft.VisualStudio.VsPackage" ...> in .vsixmanifest file. | ||||||
|  |     /// </para> | ||||||
|  |     /// </remarks> | ||||||
|  |     [PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)] | ||||||
|  |     [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About | ||||||
|  |     [ProvideAutoLoad(UIContextGuids80.SolutionExists, PackageAutoLoadFlags.BackgroundLoad)] | ||||||
|  |     [Guid(BuildEventsPackage.PackageGuidString)] | ||||||
|  |     [SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1650:ElementDocumentationMustBeSpelledCorrectly", Justification = "pkgdef, VS and vsixmanifest are valid VS terms")] | ||||||
|  |     public sealed class BuildEventsPackage : AsyncPackage | ||||||
|  |     { | ||||||
|  |         /// <summary> | ||||||
|  |         /// VSPackage1 GUID string. | ||||||
|  |         /// </summary> | ||||||
|  |         public const string PackageGuidString = "90d6e709-5902-4603-8f56-3b4cdaaa784f"; | ||||||
|  |  | ||||||
|  |         private readonly Lazy<DTE2> _dte; | ||||||
|  |         private readonly Lazy<Events> _events; | ||||||
|  |         private readonly Lazy<BuildEvents> _buildEvents; | ||||||
|  |         private readonly Lazy<IVsOutputWindow> _outWindow; | ||||||
|  |         private readonly Lazy<IVsOutputWindowPane> _buildPane; | ||||||
|  |  | ||||||
|  |         /// <summary> | ||||||
|  |         /// Initializes a new instance of the <see cref="BuildEventsPackage"/> class. | ||||||
|  |         /// </summary> | ||||||
|  |         public BuildEventsPackage() | ||||||
|  |         { | ||||||
|  |             // Inside this method you can place any initialization code that does not require | ||||||
|  |             // any Visual Studio service because at this point the package object is created but | ||||||
|  |             // not sited yet inside Visual Studio environment. The place to do all the other | ||||||
|  |             // initialization is the Initialize method. | ||||||
|  |             _dte = new Lazy<DTE2>(() => ServiceProvider.GlobalProvider.GetService(typeof(DTE)) as DTE2); | ||||||
|  |             _events = new Lazy<Events>(() => _dte.Value.Events); | ||||||
|  |             _buildEvents = new Lazy<BuildEvents>(() => _events.Value.BuildEvents); | ||||||
|  |             _outWindow = new Lazy<IVsOutputWindow>(() => GetGlobalService(typeof(SVsOutputWindow)) as IVsOutputWindow); | ||||||
|  |             _buildPane = new Lazy<IVsOutputWindowPane>(() => | ||||||
|  |             { | ||||||
|  |                 _outWindow.Value.GetPane(VSConstants.GUID_BuildOutputWindowPane, out var pane); | ||||||
|  |                 return pane; | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         #region Package Members | ||||||
|  |  | ||||||
|  |         /// <summary> | ||||||
|  |         /// 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. | ||||||
|  |         /// </summary> | ||||||
|  |         /// <param name="cancellationToken">A cancellation token to monitor for initialization cancellation, which can occur when VS is shutting down.</param> | ||||||
|  |         /// <param name="progress">A provider for progress updates.</param> | ||||||
|  |         /// <returns>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.</returns> | ||||||
|  |         protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress<ServiceProgressData> 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 JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); | ||||||
|  |  | ||||||
|  |             _buildEvents.Value.OnBuildBegin += DoBuildBegin; | ||||||
|  |             _buildEvents.Value.OnBuildDone += DoBuildEnd; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         private void DoBuildEnd(vsBuildScope Scope, vsBuildAction Action) | ||||||
|  |         { | ||||||
|  |             ThreadHelper.ThrowIfNotOnUIThread(); | ||||||
|  |             var solution = _dte.Value.Solution; | ||||||
|  |             if (solution != null) | ||||||
|  |             { | ||||||
|  |                 var postBuildScript = Path.Combine(Path.GetDirectoryName(solution.FullName), "_postbuild.ps1"); | ||||||
|  |                 if (File.Exists(postBuildScript)) | ||||||
|  |                 { | ||||||
|  |                     new RunPSScript(postBuildScript, _buildPane.Value).RunScript(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         private void DoBuildBegin(vsBuildScope Scope, vsBuildAction Action) | ||||||
|  |         { | ||||||
|  |             ThreadHelper.ThrowIfNotOnUIThread(); | ||||||
|  |             var solution = _dte.Value.Solution; | ||||||
|  |             if (solution != null) | ||||||
|  |             { | ||||||
|  |                 var preBuildScript = Path.Combine(Path.GetDirectoryName(solution.FullName), "_prebuild.ps1"); | ||||||
|  |                 if (File.Exists(preBuildScript)) | ||||||
|  |                 { | ||||||
|  |                     new RunPSScript(preBuildScript, _buildPane.Value).RunScript(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         #endregion | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										140
									
								
								CPABuildEvents/BuildEventsPackage.resx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										140
									
								
								CPABuildEvents/BuildEventsPackage.resx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,140 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <!-- | ||||||
|  |     VS SDK Notes: This resx file contains the resources that will be consumed from your package by Visual Studio. | ||||||
|  |     For example, Visual Studio will attempt to load resource '400' from this resource stream when it needs to | ||||||
|  |     load your package's icon. Because Visual Studio will always look in the VSPackage.resources stream first for | ||||||
|  |     resources it needs, you should put additional resources that Visual Studio will load directly into this resx | ||||||
|  |     file. | ||||||
|  |  | ||||||
|  |     Resources that you would like to access directly from your package in a strong-typed fashion should be stored | ||||||
|  |     in Resources.resx or another resx file. | ||||||
|  | --> | ||||||
|  | <root> | ||||||
|  |   <!-- | ||||||
|  |     Microsoft ResX Schema | ||||||
|  |  | ||||||
|  |     Version 2.0 | ||||||
|  |  | ||||||
|  |     The primary goals of this format is to allow a simple XML format | ||||||
|  |     that is mostly human readable. The generation and parsing of the | ||||||
|  |     various data types are done through the TypeConverter classes | ||||||
|  |     associated with the data types. | ||||||
|  |  | ||||||
|  |     Example: | ||||||
|  |  | ||||||
|  |     ... ado.net/XML headers & schema ... | ||||||
|  |     <resheader name="resmimetype">text/microsoft-resx</resheader> | ||||||
|  |     <resheader name="version">2.0</resheader> | ||||||
|  |     <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | ||||||
|  |     <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | ||||||
|  |     <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | ||||||
|  |     <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | ||||||
|  |     <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | ||||||
|  |         <value>[base64 mime encoded serialized .NET Framework object]</value> | ||||||
|  |     </data> | ||||||
|  |     <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | ||||||
|  |         <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | ||||||
|  |         <comment>This is a comment</comment> | ||||||
|  |     </data> | ||||||
|  |  | ||||||
|  |     There are any number of "resheader" rows that contain simple | ||||||
|  |     name/value pairs. | ||||||
|  |  | ||||||
|  |     Each data row contains a name, and value. The row also contains a | ||||||
|  |     type or mimetype. Type corresponds to a .NET class that support | ||||||
|  |     text/value conversion through the TypeConverter architecture. | ||||||
|  |     Classes that don't support this are serialized and stored with the | ||||||
|  |     mimetype set. | ||||||
|  |  | ||||||
|  |     The mimetype is used for serialized objects, and tells the | ||||||
|  |     ResXResourceReader how to depersist the object. This is currently not | ||||||
|  |     extensible. For a given mimetype the value must be set accordingly: | ||||||
|  |  | ||||||
|  |     Note - application/x-microsoft.net.object.binary.base64 is the format | ||||||
|  |     that the ResXResourceWriter will generate, however the reader can | ||||||
|  |     read any of the formats listed below. | ||||||
|  |  | ||||||
|  |     mimetype: application/x-microsoft.net.object.binary.base64 | ||||||
|  |     value   : The object must be serialized with | ||||||
|  |             : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | ||||||
|  |             : and then encoded with base64 encoding. | ||||||
|  |  | ||||||
|  |     mimetype: application/x-microsoft.net.object.soap.base64 | ||||||
|  |     value   : The object must be serialized with | ||||||
|  |             : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | ||||||
|  |             : and then encoded with base64 encoding. | ||||||
|  |  | ||||||
|  |     mimetype: application/x-microsoft.net.object.bytearray.base64 | ||||||
|  |     value   : The object must be serialized into a byte array | ||||||
|  |             : using a System.ComponentModel.TypeConverter | ||||||
|  |             : and then encoded with base64 encoding. | ||||||
|  |     --> | ||||||
|  |   <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | ||||||
|  |     <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | ||||||
|  |     <xsd:element name="root" msdata:IsDataSet="true"> | ||||||
|  |       <xsd:complexType> | ||||||
|  |         <xsd:choice maxOccurs="unbounded"> | ||||||
|  |           <xsd:element name="metadata"> | ||||||
|  |             <xsd:complexType> | ||||||
|  |               <xsd:sequence> | ||||||
|  |                 <xsd:element name="value" type="xsd:string" minOccurs="0" /> | ||||||
|  |               </xsd:sequence> | ||||||
|  |               <xsd:attribute name="name" use="required" type="xsd:string" /> | ||||||
|  |               <xsd:attribute name="type" type="xsd:string" /> | ||||||
|  |               <xsd:attribute name="mimetype" type="xsd:string" /> | ||||||
|  |               <xsd:attribute ref="xml:space" /> | ||||||
|  |             </xsd:complexType> | ||||||
|  |           </xsd:element> | ||||||
|  |           <xsd:element name="assembly"> | ||||||
|  |             <xsd:complexType> | ||||||
|  |               <xsd:attribute name="alias" type="xsd:string" /> | ||||||
|  |               <xsd:attribute name="name" type="xsd:string" /> | ||||||
|  |             </xsd:complexType> | ||||||
|  |           </xsd:element> | ||||||
|  |           <xsd:element name="data"> | ||||||
|  |             <xsd:complexType> | ||||||
|  |               <xsd:sequence> | ||||||
|  |                 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | ||||||
|  |                 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | ||||||
|  |               </xsd:sequence> | ||||||
|  |               <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | ||||||
|  |               <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | ||||||
|  |               <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | ||||||
|  |               <xsd:attribute ref="xml:space" /> | ||||||
|  |             </xsd:complexType> | ||||||
|  |           </xsd:element> | ||||||
|  |           <xsd:element name="resheader"> | ||||||
|  |             <xsd:complexType> | ||||||
|  |               <xsd:sequence> | ||||||
|  |                 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | ||||||
|  |               </xsd:sequence> | ||||||
|  |               <xsd:attribute name="name" type="xsd:string" use="required" /> | ||||||
|  |             </xsd:complexType> | ||||||
|  |           </xsd:element> | ||||||
|  |         </xsd:choice> | ||||||
|  |       </xsd:complexType> | ||||||
|  |     </xsd:element> | ||||||
|  |   </xsd:schema> | ||||||
|  |   <resheader name="resmimetype"> | ||||||
|  |     <value>text/microsoft-resx</value> | ||||||
|  |   </resheader> | ||||||
|  |   <resheader name="version"> | ||||||
|  |     <value>2.0</value> | ||||||
|  |   </resheader> | ||||||
|  |   <resheader name="reader"> | ||||||
|  |     <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||||||
|  |   </resheader> | ||||||
|  |   <resheader name="writer"> | ||||||
|  |     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||||||
|  |   </resheader> | ||||||
|  |   <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> | ||||||
|  |   <data name="110" xml:space="preserve"> | ||||||
|  |     <value>VSPackage1 Extension</value> | ||||||
|  |   </data> | ||||||
|  |   <data name="112" xml:space="preserve"> | ||||||
|  |     <value>VSPackage1 Visual Studio Extension Detailed Info</value> | ||||||
|  |   </data> | ||||||
|  |   <data name="400" type="System.Resources.ResXFileRef, System.Windows.Forms"> | ||||||
|  |     <value>Resources\BuildEventsPackage.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> | ||||||
|  |   </data> | ||||||
|  | </root> | ||||||
							
								
								
									
										108
									
								
								CPABuildEvents/CPABuildEvents.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								CPABuildEvents/CPABuildEvents.csproj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,108 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||||
|  |   <PropertyGroup> | ||||||
|  |     <MinimumVisualStudioVersion>16.0</MinimumVisualStudioVersion> | ||||||
|  |     <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <PropertyGroup> | ||||||
|  |     <SignAssembly>true</SignAssembly> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <PropertyGroup> | ||||||
|  |     <AssemblyOriginatorKeyFile> | ||||||
|  |     </AssemblyOriginatorKeyFile> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> | ||||||
|  |   <PropertyGroup> | ||||||
|  |     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||||||
|  |     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||||||
|  |     <SchemaVersion>2.0</SchemaVersion> | ||||||
|  |     <ProjectTypeGuids>{82b43b9b-a64c-4715-b499-d71e9ca2bd60};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> | ||||||
|  |     <ProjectGuid>{2EDFEE33-2BAD-49D3-87AC-C59C42A099D0}</ProjectGuid> | ||||||
|  |     <OutputType>Library</OutputType> | ||||||
|  |     <AppDesignerFolder>Properties</AppDesignerFolder> | ||||||
|  |     <RootNamespace>CPABuildEvents</RootNamespace> | ||||||
|  |     <AssemblyName>CPABuildEvents</AssemblyName> | ||||||
|  |     <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion> | ||||||
|  |     <GeneratePkgDefFile>true</GeneratePkgDefFile> | ||||||
|  |     <UseCodebase>true</UseCodebase> | ||||||
|  |     <IncludeAssemblyInVSIXContainer>true</IncludeAssemblyInVSIXContainer> | ||||||
|  |     <IncludeDebugSymbolsInVSIXContainer>true</IncludeDebugSymbolsInVSIXContainer> | ||||||
|  |     <IncludeDebugSymbolsInLocalVSIXDeployment>true</IncludeDebugSymbolsInLocalVSIXDeployment> | ||||||
|  |     <CopyBuildOutputToOutputDirectory>true</CopyBuildOutputToOutputDirectory> | ||||||
|  |     <CopyOutputSymbolsToOutputDirectory>true</CopyOutputSymbolsToOutputDirectory> | ||||||
|  |     <StartAction>Program</StartAction> | ||||||
|  |     <StartProgram Condition="'$(DevEnvDir)' != ''">$(DevEnvDir)devenv.exe</StartProgram> | ||||||
|  |     <StartArguments>/rootsuffix Exp</StartArguments> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||||||
|  |     <DebugSymbols>true</DebugSymbols> | ||||||
|  |     <DebugType>full</DebugType> | ||||||
|  |     <Optimize>false</Optimize> | ||||||
|  |     <OutputPath>bin\Debug\</OutputPath> | ||||||
|  |     <DefineConstants>DEBUG;TRACE</DefineConstants> | ||||||
|  |     <ErrorReport>prompt</ErrorReport> | ||||||
|  |     <WarningLevel>4</WarningLevel> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | ||||||
|  |     <DebugType>pdbonly</DebugType> | ||||||
|  |     <Optimize>true</Optimize> | ||||||
|  |     <OutputPath>bin\Release\</OutputPath> | ||||||
|  |     <DefineConstants>TRACE</DefineConstants> | ||||||
|  |     <ErrorReport>prompt</ErrorReport> | ||||||
|  |     <WarningLevel>4</WarningLevel> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <Compile Include="Properties\AssemblyInfo.cs" /> | ||||||
|  |     <Compile Include="BuildEventsPackage.cs" /> | ||||||
|  |     <Compile Include="RunPSScript.cs" /> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <None Include="source.extension.vsixmanifest"> | ||||||
|  |       <SubType>Designer</SubType> | ||||||
|  |     </None> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <Reference Include="Microsoft.CSharp" /> | ||||||
|  |     <Reference Include="PresentationCore" /> | ||||||
|  |     <Reference Include="PresentationFramework" /> | ||||||
|  |     <Reference Include="System" /> | ||||||
|  |     <Reference Include="System.Data" /> | ||||||
|  |     <Reference Include="System.Design" /> | ||||||
|  |     <Reference Include="System.Drawing" /> | ||||||
|  |     <Reference Include="System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | ||||||
|  |       <SpecificVersion>False</SpecificVersion> | ||||||
|  |       <HintPath>..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\3.0\System.Management.Automation.dll</HintPath> | ||||||
|  |     </Reference> | ||||||
|  |     <Reference Include="System.Windows.Forms" /> | ||||||
|  |     <Reference Include="System.Xml" /> | ||||||
|  |     <Reference Include="WindowsBase" /> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <PackageReference Include="Microsoft.VisualStudio.SDK" Version="16.0.200" ExcludeAssets="runtime"> | ||||||
|  |       <IncludeAssets>compile; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||||
|  |     </PackageReference> | ||||||
|  |     <PackageReference Include="Microsoft.VSSDK.BuildTools" Version="16.1.3121"> | ||||||
|  |       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||||
|  |       <PrivateAssets>all</PrivateAssets> | ||||||
|  |     </PackageReference> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <Content Include="Resources\BuildEventsPackage.ico" /> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <EmbeddedResource Include="BuildEventsPackage.resx"> | ||||||
|  |       <MergeWithCTO>true</MergeWithCTO> | ||||||
|  |       <ManifestResourceName>VSPackage</ManifestResourceName> | ||||||
|  |       <SubType>Designer</SubType> | ||||||
|  |     </EmbeddedResource> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> | ||||||
|  |   <Import Project="$(VSToolsPath)\VSSDK\Microsoft.VsSDK.targets" Condition="'$(VSToolsPath)' != ''" /> | ||||||
|  |   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.  | ||||||
|  |        Other similar extension points exist, see Microsoft.Common.targets. | ||||||
|  |   <Target Name="BeforeBuild"> | ||||||
|  |   </Target> | ||||||
|  |   <Target Name="AfterBuild"> | ||||||
|  |   </Target> | ||||||
|  |   --> | ||||||
|  | </Project> | ||||||
							
								
								
									
										33
									
								
								CPABuildEvents/Properties/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								CPABuildEvents/Properties/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -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("CPABuildEvents")] | ||||||
|  | [assembly: AssemblyDescription("")] | ||||||
|  | [assembly: AssemblyConfiguration("")] | ||||||
|  | [assembly: AssemblyCompany("")] | ||||||
|  | [assembly: AssemblyProduct("CPABuildEvents")] | ||||||
|  | [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")] | ||||||
							
								
								
									
										
											BIN
										
									
								
								CPABuildEvents/Resources/BuildEventsPackage.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								CPABuildEvents/Resources/BuildEventsPackage.ico
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 418 KiB | 
							
								
								
									
										71
									
								
								CPABuildEvents/RunPSScript.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								CPABuildEvents/RunPSScript.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,71 @@ | |||||||
|  | using Microsoft.VisualStudio.Shell; | ||||||
|  | using Microsoft.VisualStudio.Shell.Interop; | ||||||
|  | using Microsoft.VisualStudio.Threading; | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.Collections.ObjectModel; | ||||||
|  | using System.IO; | ||||||
|  | using System.Linq; | ||||||
|  | using System.Management.Automation; | ||||||
|  | using System.Text; | ||||||
|  | using Task = System.Threading.Tasks.Task; | ||||||
|  |  | ||||||
|  | namespace CPABuildEvents | ||||||
|  | { | ||||||
|  |     class RunPSScript | ||||||
|  |     { | ||||||
|  |         private string _scriptFile; | ||||||
|  |         private IVsOutputWindowPane _pane; | ||||||
|  |  | ||||||
|  |         public RunPSScript(string scriptFile, IVsOutputWindowPane pane) | ||||||
|  |         { | ||||||
|  |             _scriptFile = scriptFile; | ||||||
|  |             _pane = pane; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         public void RunScript() | ||||||
|  |         { | ||||||
|  |             using (var psi = PowerShell.Create()) | ||||||
|  |             { | ||||||
|  |                 psi.AddScript(_scriptFile); | ||||||
|  |                 psi.Streams.Error.DataAdded += Error_DataAdded; | ||||||
|  |  | ||||||
|  |                 var results = psi.Invoke(); | ||||||
|  |                 PrintResults(results); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         private void Error_DataAdded(object sender, DataAddedEventArgs e) | ||||||
|  |         { | ||||||
|  |             var record = ((PSDataCollection<ErrorRecord>)sender)[e.Index]; | ||||||
|  |  | ||||||
|  |             PrintRecordAsync(record); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         private async Task PrintRecordAsync(ErrorRecord record) | ||||||
|  |         { | ||||||
|  |             if (_pane == null) | ||||||
|  |             { | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); | ||||||
|  |             _pane.OutputString($"{Path.GetFileName(_scriptFile)}: {record}\r\n"); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         private void PrintResults(Collection<PSObject> results) | ||||||
|  |         { | ||||||
|  |             if (_pane == null) | ||||||
|  |             { | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             ThreadHelper.ThrowIfNotOnUIThread(); | ||||||
|  |             foreach (var result in results) | ||||||
|  |             { | ||||||
|  |                 _pane.OutputString($"{Path.GetFileNameWithoutExtension(_scriptFile)}: {result}\r\n"); | ||||||
|  |             } | ||||||
|  |             _pane.Activate(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										22
									
								
								CPABuildEvents/source.extension.vsixmanifest
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								CPABuildEvents/source.extension.vsixmanifest
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011"> | ||||||
|  |     <Metadata> | ||||||
|  |         <Identity Id="CPABuildEvents.5e105112-3312-435f-8747-a9cb95678d85" Version="1.0" Language="en-US" Publisher="Daniel Triendl" /> | ||||||
|  |         <DisplayName>CPABuildEvents</DisplayName> | ||||||
|  |         <Description xml:space="preserve">Run _prebuild.ps1 and _postbuild.ps1 on build start and end</Description> | ||||||
|  |         <Preview>true</Preview> | ||||||
|  |     </Metadata> | ||||||
|  |     <Installation> | ||||||
|  |         <InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[16.0, 17.0)" /> | ||||||
|  |     </Installation> | ||||||
|  |     <Dependencies> | ||||||
|  |         <Dependency Id="Microsoft.Framework.NDP" DisplayName="Microsoft .NET Framework" d:Source="Manual" Version="[4.5,)" /> | ||||||
|  |         <Dependency Id="Microsoft.VisualStudio.MPF.16.0" DisplayName="Visual Studio MPF 16.0" d:Source="Installed" Version="[16.0,17.0)" /> | ||||||
|  |     </Dependencies> | ||||||
|  |     <Prerequisites> | ||||||
|  |         <Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[16.0,17.0)" DisplayName="Visual Studio core editor" /> | ||||||
|  |     </Prerequisites> | ||||||
|  |     <Assets> | ||||||
|  |         <Asset Type="Microsoft.VisualStudio.VsPackage" d:Source="Project" d:ProjectName="%CurrentProject%" Path="|%CurrentProject%;PkgdefProjectOutputGroup|" /> | ||||||
|  |     </Assets> | ||||||
|  | </PackageManifest> | ||||||
		Reference in New Issue
	
	Block a user