Skip to content

Commit

Permalink
Add Visual Studio 2022 support
Browse files Browse the repository at this point in the history
  • Loading branch information
HO-COOH committed Oct 24, 2021
1 parent b04b9b7 commit 1cde708
Show file tree
Hide file tree
Showing 27 changed files with 406 additions and 42 deletions.
18 changes: 17 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,33 @@
# ResourceMonitor
A Visual Studio extension for monitoring CPU, RAM, disk and Battery usage.

This extension supports:
- Visual Studio 2019
- Visual Studio 2022

## Download
[Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=HO-COOH.ResourceMonitor)
For Visual Studio 2019 -> [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=HO-COOH.ResourceMonitor)

For Visual Studio 2022 -> [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=HO-COOH.ResourceMonitor2022)

## Usage
~~1. ``Tools`` -> ``Start Monitor``~~ No need. It automatically loads now :)
![](./assets/1.png)

1. Now it will appear in the status bar.

![](./assets/2.png)

Now supports Visual Studio 2022 too:

![](./assets/3.png)


## Plans
- ~~Add a setting menus for changing the refresh speed.~~
- ~~Add settings for displaying different things.~~
- ~~Able to run on start up~~
- ~~Visual Studio 2022 support~~

### Note:
Partially inspired by:
Expand Down
45 changes: 20 additions & 25 deletions ResourceMonitor.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,15 @@
<PropertyGroup>
<AssemblyOriginatorKeyFile>Key.snk</AssemblyOriginatorKeyFile>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>SharedFiles\VSPackage1.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<OutputPath>bin\Debug\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\Release\</OutputPath>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
Expand Down Expand Up @@ -51,17 +60,7 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Compile Include="Battery.cs" />
<Compile Include="Command1.cs" />
<Compile Include="CPU.cs" />
<Compile Include="Disk.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="RAM.cs" />
<Compile Include="ResourceMonitorPackage.cs" />
<Compile Include="Options.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Units.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Key.snk" />
Expand All @@ -80,13 +79,13 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.VisualStudio.SDK" Version="16.0.205" ExcludeAssets="runtime" />
<PackageReference Include="Microsoft.VSSDK.BuildTools" Version="16.6.2051" />
</ItemGroup>
<ItemGroup>
<VSCTCompile Include="ResourceMonitorPackage.vsct">
<ResourceName>Menus.ctmenu</ResourceName>
</VSCTCompile>
<PackageReference Include="Microsoft.VisualStudio.SDK" Version="16.10.31321.278" ExcludeAssets="runtime">
<IncludeAssets>compile; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.VSSDK.BuildTools" Version="17.0.5232">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<Content Include="2.png">
Expand All @@ -101,15 +100,11 @@
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<IncludeInVSIX>true</IncludeInVSIX>
</Content>
<Content Include="Resources\Command1.png" />
<Content Include="Resources\VSPackage1.ico" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="VSPackage.resx">
<MergeWithCTO>true</MergeWithCTO>
<ManifestResourceName>VSPackage</ManifestResourceName>
</EmbeddedResource>
<Content Include="SharedFiles\Command1.png" />
<Content Include="SharedFiles\VSPackage1.ico" />
<VSCTCompile Include="SharedFiles\ResourceMonitorPackage.vsct" />
</ItemGroup>
<Import Project="VS2022\VS2022.projitems" Label="Shared" />
<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.
Expand Down
35 changes: 33 additions & 2 deletions ResourceMonitor.sln
Original file line number Diff line number Diff line change
@@ -1,20 +1,51 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30128.74
# Visual Studio Version 17
VisualStudioVersion = 17.0.31815.197
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceMonitor", "ResourceMonitor.csproj", "{6CD8DE78-3620-4380-B055-F6EB5F931237}"
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "VS2022", "VS2022\VS2022.shproj", "{0965E028-B866-49BF-ADA0-74AF57302DCA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VS2022Support", "VS2022Support\VS2022Support.csproj", "{1C5DC8F1-E081-45AA-9398-2A1D4F05094A}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
VS2022\VS2022.projitems*{0965e028-b866-49bf-ada0-74af57302dca}*SharedItemsImports = 13
VS2022\VS2022.projitems*{1c5dc8f1-e081-45aa-9398-2a1d4f05094a}*SharedItemsImports = 4
VS2022\VS2022.projitems*{6cd8de78-3620-4380-b055-f6eb5f931237}*SharedItemsImports = 4
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6CD8DE78-3620-4380-B055-F6EB5F931237}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6CD8DE78-3620-4380-B055-F6EB5F931237}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6CD8DE78-3620-4380-B055-F6EB5F931237}.Debug|x64.ActiveCfg = Debug|Any CPU
{6CD8DE78-3620-4380-B055-F6EB5F931237}.Debug|x64.Build.0 = Debug|Any CPU
{6CD8DE78-3620-4380-B055-F6EB5F931237}.Debug|x86.ActiveCfg = Debug|x86
{6CD8DE78-3620-4380-B055-F6EB5F931237}.Debug|x86.Build.0 = Debug|x86
{6CD8DE78-3620-4380-B055-F6EB5F931237}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6CD8DE78-3620-4380-B055-F6EB5F931237}.Release|Any CPU.Build.0 = Release|Any CPU
{6CD8DE78-3620-4380-B055-F6EB5F931237}.Release|x64.ActiveCfg = Release|Any CPU
{6CD8DE78-3620-4380-B055-F6EB5F931237}.Release|x64.Build.0 = Release|Any CPU
{6CD8DE78-3620-4380-B055-F6EB5F931237}.Release|x86.ActiveCfg = Release|x86
{6CD8DE78-3620-4380-B055-F6EB5F931237}.Release|x86.Build.0 = Release|x86
{1C5DC8F1-E081-45AA-9398-2A1D4F05094A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1C5DC8F1-E081-45AA-9398-2A1D4F05094A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1C5DC8F1-E081-45AA-9398-2A1D4F05094A}.Debug|x64.ActiveCfg = Debug|x64
{1C5DC8F1-E081-45AA-9398-2A1D4F05094A}.Debug|x64.Build.0 = Debug|x64
{1C5DC8F1-E081-45AA-9398-2A1D4F05094A}.Debug|x86.ActiveCfg = Debug|x64
{1C5DC8F1-E081-45AA-9398-2A1D4F05094A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1C5DC8F1-E081-45AA-9398-2A1D4F05094A}.Release|Any CPU.Build.0 = Release|Any CPU
{1C5DC8F1-E081-45AA-9398-2A1D4F05094A}.Release|x64.ActiveCfg = Release|x64
{1C5DC8F1-E081-45AA-9398-2A1D4F05094A}.Release|x64.Build.0 = Release|x64
{1C5DC8F1-E081-45AA-9398-2A1D4F05094A}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
File renamed without changes
94 changes: 94 additions & 0 deletions SharedFiles/ResourceMonitorPackage.vsct
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xs="http://www.w3.org/2001/XMLSchema">

<!-- This is the file that defines the actual layout and type of the commands.
It is divided in different sections (e.g. command definition, command
placement, ...), with each defining a specific set of properties.
See the comment before each section for more details about how to
use it. -->

<!-- The VSCT compiler (the tool that translates this file into the binary
format that VisualStudio will consume) has the ability to run a preprocessor
on the vsct file; this preprocessor is (usually) the C++ preprocessor, so
it is possible to define includes and macros with the same syntax used
in C++ files. Using this ability of the compiler here, we include some files
defining some of the constants that we will use inside the file. -->

<!--This is the file that defines the IDs for all the commands exposed by VisualStudio. -->
<Extern href="stdidcmd.h"/>

<!--This header contains the command ids for the menus provided by the shell. -->
<Extern href="vsshlids.h"/>

<!--The Commands section is where commands, menus, and menu groups are defined.
This section uses a Guid to identify the package that provides the command defined inside it. -->
<Commands package="guidResourceMonitorPackage">
<!-- Inside this section we have different sub-sections: one for the menus, another
for the menu groups, one for the buttons (the actual commands), one for the combos
and the last one for the bitmaps used. Each element is identified by a command id that
is a unique pair of guid and numeric identifier; the guid part of the identifier is usually
called "command set" and is used to group different command inside a logically related
group; your package should define its own command set in order to avoid collisions
with command ids defined by other packages. -->

<!-- In this section you can define new menu groups. A menu group is a container for
other menus or buttons (commands); from a visual point of view you can see the
group as the part of a menu contained between two lines. The parent of a group
must be a menu. -->
<Groups>
<Group guid="guidResourceMonitorPackageCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
</Group>
</Groups>

<!--Buttons section. -->
<!--This section defines the elements the user can interact with, like a menu command or a button
or combo box in a toolbar. -->
<Buttons>
<!--To define a menu group you have to specify its ID, the parent menu and its display priority.
The command is visible and enabled by default. If you need to change the visibility, status, etc, you can use
the CommandFlag node.
You can add more than one CommandFlag node e.g.:
<CommandFlag>DefaultInvisible</CommandFlag>
<CommandFlag>DynamicVisibility</CommandFlag>
If you do not want an image next to your command, remove the Icon node /> -->
<Button guid="guidResourceMonitorPackageCmdSet" id="Command1Id" priority="0x0100" type="Button">
<Parent guid="guidResourceMonitorPackageCmdSet" id="MyMenuGroup" />
<Icon guid="guidImages" id="bmpPic1" />
<Strings>
<ButtonText>Start Monitor</ButtonText>
</Strings>
</Button>
</Buttons>

<!--The bitmaps section is used to define the bitmaps that are used for the commands.-->
<Bitmaps>
<!-- The bitmap id is defined in a way that is a little bit different from the others:
the declaration starts with a guid for the bitmap strip, then there is the resource id of the
bitmap strip containing the bitmaps and then there are the numeric ids of the elements used
inside a button definition. An important aspect of this declaration is that the element id
must be the actual index (1-based) of the bitmap inside the bitmap strip. -->
<Bitmap guid="guidImages" href="Command1.png" usedList="bmpPic1, bmpPic2, bmpPicSearch, bmpPicX, bmpPicArrows, bmpPicStrikethrough"/>
</Bitmaps>
</Commands>

<Symbols>
<!-- This is the package guid. -->
<GuidSymbol name="guidResourceMonitorPackage" value="{daf19364-8cbf-4d18-8dd6-fc735742fb5d}" />

<!-- This is the guid used to group the menu commands together -->
<GuidSymbol name="guidResourceMonitorPackageCmdSet" value="{425d3eaa-9e76-410f-b38b-41b6afcd4eb0}">
<IDSymbol name="MyMenuGroup" value="0x1020" />
<IDSymbol name="Command1Id" value="0x0100" />
</GuidSymbol>

<GuidSymbol name="guidImages" value="{723bc055-ddac-4f02-b668-d286c815f68d}" >
<IDSymbol name="bmpPic1" value="1" />
<IDSymbol name="bmpPic2" value="2" />
<IDSymbol name="bmpPicSearch" value="3" />
<IDSymbol name="bmpPicX" value="4" />
<IDSymbol name="bmpPicArrows" value="5" />
<IDSymbol name="bmpPicStrikethrough" value="6" />
</GuidSymbol>
</Symbols>
</CommandTable>
Binary file added SharedFiles/VSPackage1.ico
Binary file not shown.
Binary file added SharedFiles/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion Battery.cs → VS2022/Battery.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public static (int, int, int) BatteryRemains
int remainsInHour = remainsInSeconds / 60 / 60;
int remainsMinute = (remainsInSeconds - remainsInHour * 3600) / 60;
int remainsSecond = remainsInSeconds - remainsInHour * 3600 - remainsMinute * 60;
return (remainsInHour, remainsMinute, remainsInSeconds);
return (remainsInHour, remainsMinute, remainsSecond);
}
}

Expand Down
File renamed without changes.
4 changes: 3 additions & 1 deletion Command1.cs → VS2022/Command1.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ private void UpdateSettings()
{
var options = (OptionPage)GetDialogPage(typeof(OptionPage));

refreshInterval = options.RefreshInterval;

showCPU = options.ShowCPU;

showRam = options.ShowRAM;
Expand Down Expand Up @@ -133,7 +135,7 @@ private static string SizeUnitToStr(SizeUnit unit)
return "";
}

private async void GetSolutionDir()
private async Task GetSolutionDir()
{
try
{
Expand Down
File renamed without changes.
File renamed without changes.
14 changes: 7 additions & 7 deletions RAM.cs → VS2022/RAM.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ static class RAM
true
);

private static readonly PerformanceCounter vsCounter = new PerformanceCounter(
"Process",
"Working Set",
"devenv",
true
);
//private static readonly PerformanceCounter vsCounter = new PerformanceCounter(
// "Process",
// "Working Set",
// "devenv",
// true
//); //This would throws InvalidArugumentException with VS2022 on Windows 11

private static float ToKB(float value) => value / 1024.0f;
private static float ToMB(float value) => value / 1024.0f / 1024.0f;
Expand All @@ -39,7 +39,7 @@ private static float ConvertUnit(float value, SizeUnit unit)
return 0.0f;
}
public static float TotalUsage(SizeUnit unit = SizeUnit.MB) => ConvertUnit((float)total - totalCounter.NextValue(), unit);
public static float VsUsage(SizeUnit unit = SizeUnit.MB) => ConvertUnit(vsCounter.NextValue(), unit);
public static float VsUsage(SizeUnit unit = SizeUnit.MB) => ConvertUnit(Process.GetCurrentProcess().PrivateMemorySize64, unit);

}
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
28 changes: 28 additions & 0 deletions VS2022/VS2022.projitems
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MSBuildAllProjects Condition="'$(MSBuildVersion)' == '' Or '$(MSBuildVersion)' &lt; '16.0'">$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
<HasSharedItems>true</HasSharedItems>
<SharedGUID>0965e028-b866-49bf-ada0-74af57302dca</SharedGUID>
</PropertyGroup>
<PropertyGroup Label="Configuration">
<Import_RootNamespace>VS2022</Import_RootNamespace>
</PropertyGroup>
<ItemGroup>
<Compile Include="$(MSBuildThisFileDirectory)Battery.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Command1.cs" />
<Compile Include="$(MSBuildThisFileDirectory)CPU.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Disk.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Options.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="$(MSBuildThisFileDirectory)RAM.cs" />
<Compile Include="$(MSBuildThisFileDirectory)ResourceMonitorPackage.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Units.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="$(MSBuildThisFileDirectory)VSPackage.resx">
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
</Project>
13 changes: 13 additions & 0 deletions VS2022/VS2022.shproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>0965e028-b866-49bf-ada0-74af57302dca</ProjectGuid>
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.Default.props" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.props" />
<PropertyGroup />
<Import Project="VS2022.projitems" Label="Shared" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.CSharp.targets" />
</Project>
3 changes: 0 additions & 3 deletions VSPackage.resx → VS2022/VSPackage.resx
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,4 @@
<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\VSPackage1.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>
Binary file added VS2022Support/3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
21 changes: 21 additions & 0 deletions VS2022Support/LICENSE.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2020 HO-COOH

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Loading

0 comments on commit 1cde708

Please sign in to comment.