From 240f73ee5b987fa4e400251229582b64b3924d56 Mon Sep 17 00:00:00 2001 From: Tyrie Vella Date: Wed, 23 Jul 2025 11:08:08 -0700 Subject: [PATCH 1/2] Update to windows-2025, upgrade to .NET 4.7.1 window-2019 agent has been deprecated and is no longer available. The newer agents don't include support for .NET Framework 4.6.1 or the Windows SDK that the native projects targeted. I tried some workarounds to install support for them as part of the action YML, but failed. Newer versions of .NET Framework are available on the agent images, but 4.7.2 and later start failing one of the functional tests. So I've updated the projects to target .NET Framework 4.7.1 and the latest Windows SDK. --- .github/workflows/build.yaml | 4 ++-- GVFS/FastFetch/FastFetch.csproj | 2 +- GVFS/GVFS.Common/GVFS.Common.csproj | 3 ++- .../GVFS.FunctionalTests.LockHolder.csproj | 2 +- GVFS/GVFS.FunctionalTests/GVFS.FunctionalTests.csproj | 2 +- GVFS/GVFS.GVFlt/GVFS.GVFlt.csproj | 2 +- GVFS/GVFS.Hooks/GVFS.Hooks.csproj | 2 +- GVFS/GVFS.Installers/GVFS.Installers.csproj | 2 +- GVFS/GVFS.Mount/GVFS.Mount.csproj | 2 +- GVFS/GVFS.NativeTests/GVFS.NativeTests.vcxproj | 6 +++--- GVFS/GVFS.Payload/GVFS.Payload.csproj | 2 +- GVFS/GVFS.Payload/layout.bat | 2 +- GVFS/GVFS.PerfProfiling/GVFS.PerfProfiling.csproj | 2 +- GVFS/GVFS.Platform.Windows/GVFS.Platform.Windows.csproj | 2 +- .../GVFS.PostIndexChangedHook.vcxproj | 6 +++--- GVFS/GVFS.ReadObjectHook/GVFS.ReadObjectHook.vcxproj | 6 +++--- GVFS/GVFS.Service.UI/GVFS.Service.UI.csproj | 2 +- GVFS/GVFS.Service/GVFS.Service.csproj | 2 +- GVFS/GVFS.Tests/GVFS.Tests.csproj | 2 +- GVFS/GVFS.UnitTests/GVFS.UnitTests.csproj | 7 ++++++- .../GVFS.VirtualFileSystemHook.vcxproj | 6 +++--- GVFS/GVFS.Virtualization/GVFS.Virtualization.csproj | 2 +- GVFS/GVFS/GVFS.csproj | 2 +- GVFS/GitHooksLoader/GitHooksLoader.vcxproj | 6 +++--- scripts/CreateBuildArtifacts.bat | 4 ++-- scripts/RunFunctionalTests.bat | 2 +- scripts/RunUnitTests.bat | 2 +- 27 files changed, 45 insertions(+), 39 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 2dc811ea4..f3e650f20 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -8,7 +8,7 @@ on: jobs: build: - runs-on: windows-2019 + runs-on: windows-2025 name: Build and Unit Test strategy: @@ -66,7 +66,7 @@ jobs: path: artifacts\NuGetPackages functional_test: - runs-on: windows-2019 + runs-on: windows-2025 name: Functional Tests needs: build diff --git a/GVFS/FastFetch/FastFetch.csproj b/GVFS/FastFetch/FastFetch.csproj index 1a2bdaae9..df25afb5b 100644 --- a/GVFS/FastFetch/FastFetch.csproj +++ b/GVFS/FastFetch/FastFetch.csproj @@ -2,7 +2,7 @@ Exe - net461 + net471 x64 true diff --git a/GVFS/GVFS.Common/GVFS.Common.csproj b/GVFS/GVFS.Common/GVFS.Common.csproj index e19e8ee2e..daacd2ca2 100644 --- a/GVFS/GVFS.Common/GVFS.Common.csproj +++ b/GVFS/GVFS.Common/GVFS.Common.csproj @@ -1,7 +1,7 @@  - net461 + net471 true @@ -13,6 +13,7 @@ + diff --git a/GVFS/GVFS.FunctionalTests.LockHolder/GVFS.FunctionalTests.LockHolder.csproj b/GVFS/GVFS.FunctionalTests.LockHolder/GVFS.FunctionalTests.LockHolder.csproj index 290a12b46..bb03a4171 100644 --- a/GVFS/GVFS.FunctionalTests.LockHolder/GVFS.FunctionalTests.LockHolder.csproj +++ b/GVFS/GVFS.FunctionalTests.LockHolder/GVFS.FunctionalTests.LockHolder.csproj @@ -1,7 +1,7 @@  - net461 + net471 Exe diff --git a/GVFS/GVFS.FunctionalTests/GVFS.FunctionalTests.csproj b/GVFS/GVFS.FunctionalTests/GVFS.FunctionalTests.csproj index 0a64e7440..f170451f4 100644 --- a/GVFS/GVFS.FunctionalTests/GVFS.FunctionalTests.csproj +++ b/GVFS/GVFS.FunctionalTests/GVFS.FunctionalTests.csproj @@ -1,7 +1,7 @@  - net461 + net471 Exe diff --git a/GVFS/GVFS.GVFlt/GVFS.GVFlt.csproj b/GVFS/GVFS.GVFlt/GVFS.GVFlt.csproj index a436520f9..97e2973e3 100644 --- a/GVFS/GVFS.GVFlt/GVFS.GVFlt.csproj +++ b/GVFS/GVFS.GVFlt/GVFS.GVFlt.csproj @@ -1,7 +1,7 @@ - net461 + net471 diff --git a/GVFS/GVFS.Hooks/GVFS.Hooks.csproj b/GVFS/GVFS.Hooks/GVFS.Hooks.csproj index efe7842a7..23dd6ea97 100644 --- a/GVFS/GVFS.Hooks/GVFS.Hooks.csproj +++ b/GVFS/GVFS.Hooks/GVFS.Hooks.csproj @@ -2,7 +2,7 @@ Exe - net461 + net471 diff --git a/GVFS/GVFS.Installers/GVFS.Installers.csproj b/GVFS/GVFS.Installers/GVFS.Installers.csproj index bf0c5ec7f..13cf3e601 100644 --- a/GVFS/GVFS.Installers/GVFS.Installers.csproj +++ b/GVFS/GVFS.Installers/GVFS.Installers.csproj @@ -1,7 +1,7 @@ - net461 + net471 false $(RepoOutPath)GVFS.Payload\bin\$(Configuration)\win-x64\ diff --git a/GVFS/GVFS.Mount/GVFS.Mount.csproj b/GVFS/GVFS.Mount/GVFS.Mount.csproj index 6e41c0008..83d89be63 100644 --- a/GVFS/GVFS.Mount/GVFS.Mount.csproj +++ b/GVFS/GVFS.Mount/GVFS.Mount.csproj @@ -2,7 +2,7 @@ Exe - net461 + net471 diff --git a/GVFS/GVFS.NativeTests/GVFS.NativeTests.vcxproj b/GVFS/GVFS.NativeTests/GVFS.NativeTests.vcxproj index 87352d611..ae216cfae 100644 --- a/GVFS/GVFS.NativeTests/GVFS.NativeTests.vcxproj +++ b/GVFS/GVFS.NativeTests/GVFS.NativeTests.vcxproj @@ -17,19 +17,19 @@ {3771C555-B5C1-45E2-B8B7-2CEF1619CDC5} Win32Proj GVFSNativeTests - 10.0.16299.0 + 10.0 DynamicLibrary true - v142 + v143 NotSet DynamicLibrary false - v142 + v143 true NotSet diff --git a/GVFS/GVFS.Payload/GVFS.Payload.csproj b/GVFS/GVFS.Payload/GVFS.Payload.csproj index 1df5a3210..1311bc87d 100644 --- a/GVFS/GVFS.Payload/GVFS.Payload.csproj +++ b/GVFS/GVFS.Payload/GVFS.Payload.csproj @@ -1,7 +1,7 @@  - net461 + net471 false diff --git a/GVFS/GVFS.Payload/layout.bat b/GVFS/GVFS.Payload/layout.bat index de1c0df81..ebdae19c2 100644 --- a/GVFS/GVFS.Payload/layout.bat +++ b/GVFS/GVFS.Payload/layout.bat @@ -39,7 +39,7 @@ SET OUTPUT=%5 SET ROOT=%~dp0..\.. SET BUILD_OUT="%ROOT%\..\out" -SET MANAGED_OUT_FRAGMENT=bin\%CONFIGURATION%\net461\win-x64 +SET MANAGED_OUT_FRAGMENT=bin\%CONFIGURATION%\net471\win-x64 SET NATIVE_OUT_FRAGMENT=bin\x64\%CONFIGURATION% ECHO Copying files... diff --git a/GVFS/GVFS.PerfProfiling/GVFS.PerfProfiling.csproj b/GVFS/GVFS.PerfProfiling/GVFS.PerfProfiling.csproj index de092f981..bf3ce6850 100644 --- a/GVFS/GVFS.PerfProfiling/GVFS.PerfProfiling.csproj +++ b/GVFS/GVFS.PerfProfiling/GVFS.PerfProfiling.csproj @@ -2,7 +2,7 @@ Exe - net461 + net471 diff --git a/GVFS/GVFS.Platform.Windows/GVFS.Platform.Windows.csproj b/GVFS/GVFS.Platform.Windows/GVFS.Platform.Windows.csproj index 5cbd7e174..f8fb56597 100644 --- a/GVFS/GVFS.Platform.Windows/GVFS.Platform.Windows.csproj +++ b/GVFS/GVFS.Platform.Windows/GVFS.Platform.Windows.csproj @@ -1,7 +1,7 @@ - net461 + net471 diff --git a/GVFS/GVFS.PostIndexChangedHook/GVFS.PostIndexChangedHook.vcxproj b/GVFS/GVFS.PostIndexChangedHook/GVFS.PostIndexChangedHook.vcxproj index 0537dfaf1..3808ff027 100644 --- a/GVFS/GVFS.PostIndexChangedHook/GVFS.PostIndexChangedHook.vcxproj +++ b/GVFS/GVFS.PostIndexChangedHook/GVFS.PostIndexChangedHook.vcxproj @@ -14,7 +14,7 @@ {24D161E9-D1F0-4299-BBD3-5D940BEDD535} Win32Proj GVFSPostIndexChangedHook - 10.0.16299.0 + 10.0 GVFS.PostIndexChangedHook GVFS.PostIndexChangedHook @@ -22,13 +22,13 @@ Application true - v142 + v143 MultiByte Application false - v142 + v143 true MultiByte diff --git a/GVFS/GVFS.ReadObjectHook/GVFS.ReadObjectHook.vcxproj b/GVFS/GVFS.ReadObjectHook/GVFS.ReadObjectHook.vcxproj index 613e9d9a7..09e9e6616 100644 --- a/GVFS/GVFS.ReadObjectHook/GVFS.ReadObjectHook.vcxproj +++ b/GVFS/GVFS.ReadObjectHook/GVFS.ReadObjectHook.vcxproj @@ -14,7 +14,7 @@ {5A6656D5-81C7-472C-9DC8-32D071CB2258} Win32Proj readobject - 10.0.16299.0 + 10.0 GVFS.ReadObjectHook GVFS.ReadObjectHook @@ -22,13 +22,13 @@ Application true - v142 + v143 MultiByte Application false - v142 + v143 true MultiByte diff --git a/GVFS/GVFS.Service.UI/GVFS.Service.UI.csproj b/GVFS/GVFS.Service.UI/GVFS.Service.UI.csproj index 90589d933..48e5c1605 100644 --- a/GVFS/GVFS.Service.UI/GVFS.Service.UI.csproj +++ b/GVFS/GVFS.Service.UI/GVFS.Service.UI.csproj @@ -2,7 +2,7 @@ Exe - net461 + net471 diff --git a/GVFS/GVFS.Service/GVFS.Service.csproj b/GVFS/GVFS.Service/GVFS.Service.csproj index 821141326..c24eb6505 100644 --- a/GVFS/GVFS.Service/GVFS.Service.csproj +++ b/GVFS/GVFS.Service/GVFS.Service.csproj @@ -2,7 +2,7 @@ Exe - net461 + net471 true diff --git a/GVFS/GVFS.Tests/GVFS.Tests.csproj b/GVFS/GVFS.Tests/GVFS.Tests.csproj index c02954c26..c8c173ebf 100644 --- a/GVFS/GVFS.Tests/GVFS.Tests.csproj +++ b/GVFS/GVFS.Tests/GVFS.Tests.csproj @@ -1,7 +1,7 @@ - net461 + net471 diff --git a/GVFS/GVFS.UnitTests/GVFS.UnitTests.csproj b/GVFS/GVFS.UnitTests/GVFS.UnitTests.csproj index fe7648aac..890714857 100644 --- a/GVFS/GVFS.UnitTests/GVFS.UnitTests.csproj +++ b/GVFS/GVFS.UnitTests/GVFS.UnitTests.csproj @@ -1,7 +1,7 @@  - net461 + net471 Exe true @@ -21,6 +21,11 @@ + + + + + diff --git a/GVFS/GVFS.VirtualFileSystemHook/GVFS.VirtualFileSystemHook.vcxproj b/GVFS/GVFS.VirtualFileSystemHook/GVFS.VirtualFileSystemHook.vcxproj index 8fb0cdb17..9390120db 100644 --- a/GVFS/GVFS.VirtualFileSystemHook/GVFS.VirtualFileSystemHook.vcxproj +++ b/GVFS/GVFS.VirtualFileSystemHook/GVFS.VirtualFileSystemHook.vcxproj @@ -14,7 +14,7 @@ {2D23AB54-541F-4ABC-8DCA-08C199E97ABB} Win32Proj GVFSVirtualFileSystemHook - 10.0.16299.0 + 10.0 GVFS.VirtualFileSystemHook GVFS.VirtualFileSystemHook @@ -22,13 +22,13 @@ Application true - v142 + v143 MultiByte Application false - v142 + v143 true MultiByte diff --git a/GVFS/GVFS.Virtualization/GVFS.Virtualization.csproj b/GVFS/GVFS.Virtualization/GVFS.Virtualization.csproj index bc5fa77f8..91772d269 100644 --- a/GVFS/GVFS.Virtualization/GVFS.Virtualization.csproj +++ b/GVFS/GVFS.Virtualization/GVFS.Virtualization.csproj @@ -1,7 +1,7 @@ - net461 + net471 true diff --git a/GVFS/GVFS/GVFS.csproj b/GVFS/GVFS/GVFS.csproj index 6d9d579f9..892bc1386 100644 --- a/GVFS/GVFS/GVFS.csproj +++ b/GVFS/GVFS/GVFS.csproj @@ -2,7 +2,7 @@ Exe - net461 + net471 diff --git a/GVFS/GitHooksLoader/GitHooksLoader.vcxproj b/GVFS/GitHooksLoader/GitHooksLoader.vcxproj index 78a51bf7f..0c4d4fbdf 100644 --- a/GVFS/GitHooksLoader/GitHooksLoader.vcxproj +++ b/GVFS/GitHooksLoader/GitHooksLoader.vcxproj @@ -14,19 +14,19 @@ {798DE293-6EDA-4DC4-9395-BE7A71C563E3} Win32Proj GitHooksLoader - 10.0.16299.0 + 10.0 Application true - v142 + v143 Unicode Application false - v142 + v143 true Unicode diff --git a/scripts/CreateBuildArtifacts.bat b/scripts/CreateBuildArtifacts.bat index a7ba9795e..5cca08d5a 100644 --- a/scripts/CreateBuildArtifacts.bat +++ b/scripts/CreateBuildArtifacts.bat @@ -49,7 +49,7 @@ ECHO ^************************ ECHO Collecting FastFetch... mkdir %OUTROOT%\FastFetch xcopy /S /Y ^ - %VFS_OUTDIR%\FastFetch\bin\%CONFIGURATION%\net461\win-x64 ^ + %VFS_OUTDIR%\FastFetch\bin\%CONFIGURATION%\net471\win-x64 ^ %OUTROOT%\FastFetch\ || GOTO ERROR ECHO ^*********************************** @@ -57,7 +57,7 @@ ECHO ^* Collecting GVFS.FunctionalTests * ECHO ^*********************************** mkdir %OUTROOT%\GVFS.FunctionalTests xcopy /S /Y ^ - %VFS_OUTDIR%\GVFS.FunctionalTests\bin\%CONFIGURATION%\net461\win-x64 ^ + %VFS_OUTDIR%\GVFS.FunctionalTests\bin\%CONFIGURATION%\net471\win-x64 ^ %OUTROOT%\GVFS.FunctionalTests\ || GOTO ERROR ECHO ^************************************* diff --git a/scripts/RunFunctionalTests.bat b/scripts/RunFunctionalTests.bat index 80ab7e1e4..ef86a74f8 100644 --- a/scripts/RunFunctionalTests.bat +++ b/scripts/RunFunctionalTests.bat @@ -27,7 +27,7 @@ IF NOT %ERRORLEVEL% == 0 ( ECHO error: unable to locate Git on the PATH (has it been installed?) ) -%VFS_OUTDIR%\GVFS.FunctionalTests\bin\%CONFIGURATION%\net461\win-x64\GVFS.FunctionalTests.exe /result:TestResult.xml %2 %3 %4 %5 +%VFS_OUTDIR%\GVFS.FunctionalTests\bin\%CONFIGURATION%\net471\win-x64\GVFS.FunctionalTests.exe /result:TestResult.xml %2 %3 %4 %5 SET error=%ERRORLEVEL% CALL %VFS_SCRIPTSDIR%\StopAllServices.bat diff --git a/scripts/RunUnitTests.bat b/scripts/RunUnitTests.bat index f9f684580..3424825ca 100644 --- a/scripts/RunUnitTests.bat +++ b/scripts/RunUnitTests.bat @@ -5,6 +5,6 @@ IF "%1"=="" (SET "CONFIGURATION=Debug") ELSE (SET "CONFIGURATION=%1") SET RESULT=0 -%VFS_OUTDIR%\GVFS.UnitTests\bin\%CONFIGURATION%\net461\win-x64\GVFS.UnitTests.exe || SET RESULT=1 +%VFS_OUTDIR%\GVFS.UnitTests\bin\%CONFIGURATION%\net471\win-x64\GVFS.UnitTests.exe || SET RESULT=1 EXIT /b %RESULT% From d6f30efdd6f7b8cc18665dfffa317064384d1ff8 Mon Sep 17 00:00:00 2001 From: Tyrie Vella Date: Tue, 12 Aug 2025 11:01:37 -0700 Subject: [PATCH 2/2] Make expected versions consistent --- .azure-pipelines/release.yml | 2 +- .github/workflows/build.yaml | 2 +- .vsconfig | 13 +++++++------ Readme.md | 14 ++++---------- 4 files changed, 13 insertions(+), 18 deletions(-) diff --git a/.azure-pipelines/release.yml b/.azure-pipelines/release.yml index d098c5a70..f754ce9d1 100644 --- a/.azure-pipelines/release.yml +++ b/.azure-pipelines/release.yml @@ -28,7 +28,7 @@ jobs: displayName: Install .NET SDK inputs: packageType: sdk - version: 5.0.201 + version: 8.0.413 - task: CmdLine@2 displayName: Build VFS for Git diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index f3e650f20..92e9ab675 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -24,7 +24,7 @@ jobs: - name: Install .NET SDK uses: actions/setup-dotnet@v4 with: - dotnet-version: 5.0.201 + dotnet-version: 8.0.413 - name: Add MSBuild to PATH uses: microsoft/setup-msbuild@v2.0.0 diff --git a/.vsconfig b/.vsconfig index e91f31e69..095606afa 100644 --- a/.vsconfig +++ b/.vsconfig @@ -2,12 +2,13 @@ "version": "1.0", "components": [ "Microsoft.Component.MSBuild", - "Microsoft.VisualStudio.Workload.NativeDesktop" + "Microsoft.Net.Component.4.7.1.TargetingPack", + "Microsoft.Net.Component.4.7.1.SDK", + "Microsoft.Net.Core.Component.SDK.8.0", + "Microsoft.VisualStudio.Component.VC.v143.x86.x64", + "Microsoft.VisualStudio.Component.Windows11SDK.26100", + "Microsoft.VisualStudio.Workload.NativeDesktop", "Microsoft.VisualStudio.Workload.ManagedDesktop", - "Microsoft.VisualStudio.Workload.NetCoreTools", - "Microsoft.Net.Core.Component.SDK.2.1", - "Microsoft.VisualStudio.Component.VC.v141.x86.x64", - "Microsoft.Net.Component.4.6.1.TargetingPack", - "Microsoft.Net.Component.4.6.1.SDK", + "Microsoft.VisualStudio.Workload.NetCoreTools" ] } \ No newline at end of file diff --git a/Readme.md b/Readme.md index 2ee0517b9..e388634e5 100644 --- a/Readme.md +++ b/Readme.md @@ -42,15 +42,15 @@ will notify you when new versions are available. ## Building VFS for Git If you'd like to build your own VFS for Git Windows installer: -* Install Visual Studio 2017 Community Edition or higher (https://www.visualstudio.com/downloads/). +* Install Visual Studio 2022 Community Edition or higher (https://www.visualstudio.com/downloads/). * Include the following workloads: * .NET desktop development * Desktop development with C++ * .NET Core cross-platform development * Include the following additional components: * .NET Core runtime - * Windows 10 SDK (10.0.10240.0) -* Install the .NET Core 2.1 SDK (https://www.microsoft.com/net/download/dotnet-core/2.1) + * Windows 10 or 11 SDK (10.0+) +* Install the .NET Core 8 SDK (https://www.microsoft.com/net/download/dotnet-core/8) * Install [`nuget.exe`](https://www.nuget.org/downloads) * Create a folder to clone into, e.g. `C:\Repos\VFSForGit` * Clone this repo into the `src` subfolder, e.g. `C:\Repos\VFSForGit\src` @@ -59,13 +59,7 @@ If you'd like to build your own VFS for Git Windows installer: build will fail, and the second and subsequent builds will succeed. This is because the build requires a prebuild code generation step. For details, see the build script in the previous step. -You can also use Visual Studio 2019. There are a couple of options for getting all the dependencies. -* You can install Visual Studio 2017 side by side with Visual Studio 2019, and make sure that you have all the dependencies from Visual Studio 2017 installed -* Alternatively, if you only want to have Visual Studio 2019 installed, install the following extra dependencies: - * MSVC v141 VS 2017 C++ build tools via the optional components in the Visual Studio 2019 installer. It is under the "Desktop Development with C++" heading. - * Windows 10 SDK (10.0.10240.0) via the archived SDK page: https://developer.microsoft.com/en-us/windows/downloads/sdk-archive - -Visual Studio 2019 will [automatically prompt you to install these dependencies](https://devblogs.microsoft.com/setup/configure-visual-studio-across-your-organization-with-vsconfig/) when you open the solution. The .vsconfig file that is present in the root of the repository specifies all required components _except_ the Windows 10 SDK (10.0.10240.0) as this component is no longer shipped with VS2019 - **you'll still need to install that separately**. +Visual Studio 2022 will [automatically prompt you to install these dependencies](https://devblogs.microsoft.com/setup/configure-visual-studio-across-your-organization-with-vsconfig/) when you open the solution. The .vsconfig file that is present in the root of the repository specifies all required components. The installer can now be found at `C:\Repos\VFSForGit\BuildOutput\GVFS.Installer.Windows\bin\x64\[Debug|Release]\SetupGVFS..exe`