From ed050cc6768c6ef9eb7d4677fd7e4e88703df344 Mon Sep 17 00:00:00 2001 From: "Calvin A. Allen" Date: Fri, 2 Jan 2026 18:26:19 -0500 Subject: [PATCH 1/3] feat: modernize to SDK-style project with ARM64 support - Convert .csproj to SDK-style using CodingWithCalvin.VsixSdk/0.3.0 - Add ARM64 installation target alongside AMD64 - Update VS version range to [17.0,19.0) - Standardize output path to bin/$(Configuration)/ - Replace msbuild workflow with dotnet build - Rename build workflow from release_build_and_deploy.yml to build.yml - Use CalVer versioning (YYYY.M.D.RunNumber) --- .github/workflows/build.yml | 42 ++++++ .github/workflows/publish.yml | 4 +- .../workflows/release_build_and_deploy.yml | 46 ------- .../CodingWithCalvin.SuperClean.csproj | 122 +++--------------- .../source.extension.vsixmanifest | 5 +- 5 files changed, 66 insertions(+), 153 deletions(-) create mode 100644 .github/workflows/build.yml delete mode 100644 .github/workflows/release_build_and_deploy.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..e741a74 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,42 @@ +name: Build + +on: + workflow_dispatch: + pull_request: + types: [opened, reopened] + push: + branches: + - main + +jobs: + build: + runs-on: windows-latest + + steps: + - uses: actions/checkout@v4 + + - name: 1. Generate Version + id: version + run: | + $year = (Get-Date).Year + $month = (Get-Date).Month + $day = (Get-Date).Day + $version = "$year.$month.$day.${{ github.run_number }}" + echo "version=$version" >> $env:GITHUB_OUTPUT + shell: pwsh + + - name: 2. Build Project + run: dotnet build src/CodingWithCalvin.SuperClean/CodingWithCalvin.SuperClean.csproj -c Release -p:SetVsixVersion=${{ steps.version.outputs.version }} + + - name: 3. Create Information File + uses: jsdaniell/create-json@v1.2.3 + with: + name: 'src/CodingWithCalvin.SuperClean/bin/Release/CodingWithCalvin.SuperClean.info' + json: '{"sha":"${{ github.sha }}", "version":"${{ steps.version.outputs.version }}"}' + + - name: 4. Upload Artifact + uses: actions/upload-artifact@v4 + with: + path: | + src/CodingWithCalvin.SuperClean/bin/Release/CodingWithCalvin.SuperClean.info + src/CodingWithCalvin.SuperClean/bin/Release/CodingWithCalvin.SuperClean.vsix diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 3a3d04a..34a538e 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -19,9 +19,9 @@ jobs: - name: 1. Download artifact id: download-artifact - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v6 with: - workflow: release_build_and_deploy.yml + workflow: build.yml workflow_conclusion: success - name: 2. Parse Artifact Manifest diff --git a/.github/workflows/release_build_and_deploy.yml b/.github/workflows/release_build_and_deploy.yml deleted file mode 100644 index e739347..0000000 --- a/.github/workflows/release_build_and_deploy.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: 'Build and Deploy' - -on: - workflow_dispatch: - pull_request: - types: [opened, reopened] - push: - branches: - - main - tags-ignore: - - '[0-9]+.[0-9]+.[0-9]+.[0-9]+' - -jobs: - Release-Build-and-Deploy: - runs-on: windows-latest - - steps: - - uses: actions/checkout@v4 - - uses: microsoft/setup-msbuild@v2 - - uses: nuget/setup-nuget@v2 - - - name: 1. Versioning Release - id: step-version - uses: CodingWithCalvin/GHA-VSVsixVersioner@v1 - with: - extension-manifest-file: 'src/CodingWithCalvin.SuperClean/source.extension.vsixmanifest' - extension-source-file: 'src/CodingWithCalvin.SuperClean/source.extension.cs' - - - name: 2. Restoring Packages - run: nuget restore ./src/CodingWithCalvin.SuperClean.slnx - - - name: 3. Building Project - run: msbuild 'src/CodingWithCalvin.SuperClean/CodingWithCalvin.SuperClean.csproj' /p:configuration='Release' /p:platform='x64' /p:DeployExtension=False - - - name: 4. Create Information File - uses: jsdaniell/create-json@v1.2.3 - with: - name: 'src/CodingWithCalvin.SuperClean/bin/x64/Release/CodingWithCalvin.SuperClean.info' - json: '{"sha":"${{ github.sha }}", "version":"${{ steps.step-version.outputs.version }}"}' - - - name: 5. Publishing Build Artifact - uses: actions/upload-artifact@v4 - with: - path: | - src/CodingWithCalvin.SuperClean/bin/x64/Release/CodingWithCalvin.SuperClean.info - src/CodingWithCalvin.SuperClean/bin/x64/Release/CodingWithCalvin.SuperClean.vsix diff --git a/src/CodingWithCalvin.SuperClean/CodingWithCalvin.SuperClean.csproj b/src/CodingWithCalvin.SuperClean/CodingWithCalvin.SuperClean.csproj index ac430b9..322ec51 100644 --- a/src/CodingWithCalvin.SuperClean/CodingWithCalvin.SuperClean.csproj +++ b/src/CodingWithCalvin.SuperClean/CodingWithCalvin.SuperClean.csproj @@ -1,118 +1,32 @@ - - + + - 16.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - true - - - - - 15.0 - - - - x64 - bin\x64\Release\ - true - X64 - - - true - bin\x64\Debug\ - x64 - full - TRACE;DEBUG;X64 - - - - Debug - x64 - 2.0 - {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - {123DBC9B-8955-4446-9A74-DD2B8068F7B0} - Library - Properties + net48 CodingWithCalvin.SuperClean CodingWithCalvin.SuperClean - v4.8 - true - true - true - true - true - false - Program - $(DevEnvDir)devenv.exe - /rootsuffix Exp - v3 + latest + bin/$(Configuration)/ + + + True + + - - - True - True - VSCommandTable.vsct - - - - - True - True - source.extension.vsixmanifest - - - - - resources\LICENSE - true - - - Designer - VsixManifestGenerator - source.extension.cs - - - - - - - - - - - - VsctGenerator - VSCommandTable.cs - Menus.ctmenu - - - - - 17.0.492 - - - 17.5.33428.388 - - - 17.5.4072 - runtime; build; native; contentfiles; analyzers - + + + - - resources\icon.png + true - - resources\logo.png + true - - resources\LICENSE + true - - - \ No newline at end of file + + diff --git a/src/CodingWithCalvin.SuperClean/source.extension.vsixmanifest b/src/CodingWithCalvin.SuperClean/source.extension.vsixmanifest index cb5cd3c..8cea8be 100644 --- a/src/CodingWithCalvin.SuperClean/source.extension.vsixmanifest +++ b/src/CodingWithCalvin.SuperClean/source.extension.vsixmanifest @@ -10,9 +10,12 @@ bin,debug,folder,output - + amd64 + + arm64 + From 38a2189ddf44c97aeacb0ec5b48b5ece7c1cb795 Mon Sep 17 00:00:00 2001 From: "Calvin A. Allen" Date: Fri, 2 Jan 2026 18:42:35 -0500 Subject: [PATCH 2/3] fix: remove duplicate AssemblyInfo.cs for SDK-style project SDK-style projects auto-generate assembly attributes, causing duplicate attribute errors when AssemblyInfo.cs also defines them. --- .../Properties/AssemblyInfo.cs | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 src/CodingWithCalvin.SuperClean/Properties/AssemblyInfo.cs diff --git a/src/CodingWithCalvin.SuperClean/Properties/AssemblyInfo.cs b/src/CodingWithCalvin.SuperClean/Properties/AssemblyInfo.cs deleted file mode 100644 index 8b80ca6..0000000 --- a/src/CodingWithCalvin.SuperClean/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; -using CodingWithCalvin.SuperClean; - -[assembly: AssemblyTitle(Vsix.Name)] -[assembly: AssemblyDescription(Vsix.Description)] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany(Vsix.Author)] -[assembly: AssemblyProduct(Vsix.Name)] -[assembly: AssemblyCopyright("")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] -[assembly: ComVisible(false)] -[assembly: AssemblyVersion(Vsix.Version)] -[assembly: AssemblyFileVersion(Vsix.Version)] From 7612b123fda9ecc222562ab93ad8b218299cfae4 Mon Sep 17 00:00:00 2001 From: "Calvin A. Allen" Date: Fri, 2 Jan 2026 18:44:12 -0500 Subject: [PATCH 3/3] chore: add Generated folder to gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 566550e..1ef4d0a 100644 --- a/.gitignore +++ b/.gitignore @@ -183,6 +183,9 @@ orleans.codegen.cs # RIA/Silverlight projects Generated_Code/ +# SDK-style project generated files +Generated/ + # Backup & report files from converting an old project file # to a newer Visual Studio version. Backup files are not needed, # because we have git ;-)