diff --git a/Shell/PublishVS.psm1 b/Shell/PublishVS.psm1
new file mode 100644
index 000000000..ab70c66ee
--- /dev/null
+++ b/Shell/PublishVS.psm1
@@ -0,0 +1,24 @@
+function CSH-PublishVS {
+ param (
+ [Parameter(Mandatory=$true)]
+ [string]$accessToken
+ )
+
+ $repositoryRoot = Join-Path $PSScriptRoot ".."
+ $vsRoot = Join-Path $repositoryRoot "/Src/CSharpier.VisualStudio"
+
+ $vsixPath = "C:\Program Files\Microsoft Visual Studio\2022\Professional\VSSDK\VisualStudioIntegration\Tools\Bin\VsixPublisher.exe"
+
+ & $vsixPath publish `
+ -payload $vsRoot/CSharpier.VisualStudio/bin/Release/CSharpier.VisualStudio.vsix `
+ -publishManifest $vsRoot/manifest.json `
+ -personalAccessToken $accessToken
+
+ & $vsixPath publish `
+ -payload $vsRoot/CSharpier.VisualStudio2019/bin/Release/CSharpier.VisualStudio2019.vsix `
+ -publishManifest $vsRoot/manifest2019.json `
+ -personalAccessToken $accessToken
+
+}
+
+Export-ModuleMember -Function CSH-*
\ No newline at end of file
diff --git a/Src/CSharpier.VisualStudio/CONTRIBUTING.md b/Src/CSharpier.VisualStudio/CONTRIBUTING.md
index 7f3d6dc81..6c5db34fd 100644
--- a/Src/CSharpier.VisualStudio/CONTRIBUTING.md
+++ b/Src/CSharpier.VisualStudio/CONTRIBUTING.md
@@ -8,6 +8,8 @@ Publishing
- Update version in BOTH files at CSharpier.VisualStudio[2019]/source.extension.vsixmanifest
- Update ChangeLog.md
- build solution in release (can this happen via command line?)
-- go to https://marketplace.visualstudio.com/manage/publishers/csharpier (with personal microsoft account)
-- three dots - edit - add new vsix
-- Automate this if we release a lot
+- use cli
+ - CSH-PublishVS [AccessToken]
+- old way
+ - go to https://marketplace.visualstudio.com/manage/publishers/csharpier (with personal microsoft account)
+ - three dots - edit - add new vsix
diff --git a/Src/CSharpier.VisualStudio/CSharpier.VisualStudio/source.extension.vsixmanifest b/Src/CSharpier.VisualStudio/CSharpier.VisualStudio/source.extension.vsixmanifest
index 3d56dd21c..a0005a64e 100644
--- a/Src/CSharpier.VisualStudio/CSharpier.VisualStudio/source.extension.vsixmanifest
+++ b/Src/CSharpier.VisualStudio/CSharpier.VisualStudio/source.extension.vsixmanifest
@@ -7,13 +7,13 @@
https://github.com/belav/csharpier
LICENSE
logo.png
- Format, Formatting, LineEnd, Tab, Space, CSharpier, Prettier
+ CSharpier;Formatting;Prettier;C#;Code;Format;Formatter;Formatting
-
@@ -21,7 +21,7 @@
-
+
diff --git a/Src/CSharpier.VisualStudio/CSharpier.VisualStudio2019/source.extension.vsixmanifest b/Src/CSharpier.VisualStudio/CSharpier.VisualStudio2019/source.extension.vsixmanifest
index 74c19ca62..dc6fe1508 100644
--- a/Src/CSharpier.VisualStudio/CSharpier.VisualStudio2019/source.extension.vsixmanifest
+++ b/Src/CSharpier.VisualStudio/CSharpier.VisualStudio2019/source.extension.vsixmanifest
@@ -7,7 +7,7 @@
https://github.com/belav/csharpier
LICENSE
logo.png
- Format, Formatting, LineEnd, Tab, Space, CSharpier, Prettier
+ CSharpier;Formatting;Prettier;C#;Code;Format;Formatter;Formatting
diff --git a/Src/CSharpier.VisualStudio/manifest.json b/Src/CSharpier.VisualStudio/manifest.json
new file mode 100644
index 000000000..14917d23b
--- /dev/null
+++ b/Src/CSharpier.VisualStudio/manifest.json
@@ -0,0 +1,15 @@
+{
+ "$schema": "http://json.schemastore.org/vsix-publish",
+ "categories": [
+ "coding"
+ ],
+ "identity": {
+ "internalName": "CSharpier"
+ },
+ "overview": "README.md",
+ "priceCategory": "free",
+ "publisher": "csharpier",
+ "private": false,
+ "qna": true,
+ "repo": "https://github.com/belav/csharpier"
+}
\ No newline at end of file
diff --git a/Src/CSharpier.VisualStudio/manifest2019.json b/Src/CSharpier.VisualStudio/manifest2019.json
new file mode 100644
index 000000000..6c84266b1
--- /dev/null
+++ b/Src/CSharpier.VisualStudio/manifest2019.json
@@ -0,0 +1,15 @@
+{
+ "$schema": "http://json.schemastore.org/vsix-publish",
+ "categories": [
+ "coding"
+ ],
+ "identity": {
+ "internalName": "CSharpier2019"
+ },
+ "overview": "README.md",
+ "priceCategory": "free",
+ "publisher": "csharpier",
+ "private": false,
+ "qna": true,
+ "repo": "https://github.com/belav/csharpier"
+}
\ No newline at end of file