diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ced10772..89bf37a0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,12 +19,16 @@ jobs: - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: - dotnet-version: 8.0.x + dotnet-version: 9.0.x - name: Setup Soup Build uses: soupbuild/setup-soup@v1 with: version: latest + # Restore Nuget + - name: DotNet Restore + run: dotnet restore ./Soup/Source/GenerateSharp/GenerateSharp.sln + # Build Soup - name: Soup Where run: swhere @@ -52,14 +56,9 @@ jobs: run: soup build ./Soup/Source/Client/Tools/ -flavor ${{matrix.config}} # Build DotNet - - name: DotNet Restore - if: matrix.os != 'ubuntu-22.04' - run: dotnet restore ./Soup/Source/GenerateSharp/GenerateSharp.sln - name: DotNet Build - if: matrix.os != 'ubuntu-22.04' run: dotnet build -c ${{matrix.config}} --no-restore ./Soup/Source/GenerateSharp/GenerateSharp.sln - name: DotNet Test - if: matrix.os != 'ubuntu-22.04' run: dotnet test -c ${{matrix.config}} --no-build --verbosity normal ./Soup/Source/GenerateSharp/GenerateSharp.sln # Build Tools @@ -75,6 +74,10 @@ jobs: run: soup restore ./Soup/Source/Tools/PrintValueTable/ - name: Soup Build PrintValueTable run: soup build ./Soup/Source/Tools/PrintValueTable/ -flavor ${{matrix.config}} + - name: Soup Restore Migrate + run: soup restore ./Soup/Source/GenerateSharp/Migrate/ + - name: Soup Build Migrate + run: soup build ./Soup/Source/GenerateSharp/Migrate/ -flavor ${{matrix.config}} # Build Samples - name: Soup Restore C BuildExtension @@ -88,7 +91,7 @@ jobs: - name: Soup Build C StaticLibrary run: soup build ./Soup/Samples/C/StaticLibrary/Application/ -flavor ${{matrix.config}} - name: Soup Build C WindowsApplication - if: matrix.os != 'ubuntu-24.04' + if: matrix.os == 'windows-2022' run: soup build ./Soup/Samples/C/WindowsApplication/ -flavor ${{matrix.config}} - name: Soup Restore Cpp BuildExtension @@ -98,7 +101,7 @@ jobs: - name: Soup Build Cpp ConsoleApplication run: soup build ./Soup/Samples/Cpp/ConsoleApplication/ -flavor ${{matrix.config}} - name: Soup Build Cpp DirectX - if: matrix.os != 'ubuntu-24.04' + if: matrix.os == 'windows-2022' run: soup build ./Soup/Samples/Cpp/DirectX/ -flavor ${{matrix.config}} - name: Soup Build Cpp DynamicLibrary run: soup build ./Soup/Samples/Cpp/DynamicLibrary/Application/ -flavor ${{matrix.config}} @@ -111,7 +114,7 @@ jobs: - name: Soup Build Cpp StaticLibrary run: soup build ./Soup/Samples/Cpp/StaticLibrary/Application/ -flavor ${{matrix.config}} - name: Soup Build Cpp WindowsApplication - if: matrix.os != 'ubuntu-24.04' + if: matrix.os == 'windows-2022' run: soup build ./Soup/Samples/Cpp/WindowsApplication/ -flavor ${{matrix.config}} - name: Soup Restore CSharp BuildExtension diff --git a/.vscode/launch.json b/.vscode/launch.json index c8367c0a..ba445d13 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -6,7 +6,7 @@ "type": "coreclr", "request": "launch", "preLaunchTask": "", - "program": "${workspaceFolder}/Source/out/msbuild/bin/Swhere/Debug/net8.0/Swhere.dll", + "program": "${workspaceFolder}/out/msbuild/bin/Swhere/Debug/net9.0/linux-x64/Swhere.dll", "args": [], "cwd": "${workspaceFolder}", "stopAtEntry": false, diff --git a/Samples/CSharp/BuildExtension/Executable/Recipe.sml b/Samples/CSharp/BuildExtension/Executable/Recipe.sml index bdd433c7..77251116 100644 --- a/Samples/CSharp/BuildExtension/Executable/Recipe.sml +++ b/Samples/CSharp/BuildExtension/Executable/Recipe.sml @@ -1,6 +1,6 @@ Name: 'Samples.CSharp.BuildExtension.Executable' Language: 'C#|0' -TargetFramework: 'net8.0' +TargetFramework: 'net9.0' Type: 'Executable' Version: 1.0.0 Dependencies: { diff --git a/Samples/CSharp/ConsoleApplication/Recipe.sml b/Samples/CSharp/ConsoleApplication/Recipe.sml index 58f646c1..f4f88924 100644 --- a/Samples/CSharp/ConsoleApplication/Recipe.sml +++ b/Samples/CSharp/ConsoleApplication/Recipe.sml @@ -1,5 +1,5 @@ Name: 'Samples.CSharp.ConsoleApplication' Language: 'C#|0' -TargetFramework: 'net8.0' +TargetFramework: 'net9.0' Type: 'Executable' Version: 1.0.0 \ No newline at end of file diff --git a/Samples/CSharp/Library/Application/Recipe.sml b/Samples/CSharp/Library/Application/Recipe.sml index e7c78917..b1990e29 100644 --- a/Samples/CSharp/Library/Application/Recipe.sml +++ b/Samples/CSharp/Library/Application/Recipe.sml @@ -1,6 +1,6 @@ Name: 'Samples.CSharp.Library.ConsoleApplication' Language: 'C#|0' -TargetFramework: 'net8.0' +TargetFramework: 'net9.0' Type: 'Executable' Version: 1.0.0 Dependencies: { diff --git a/Samples/CSharp/Library/Library/Recipe.sml b/Samples/CSharp/Library/Library/Recipe.sml index 8f154cc2..fdbd995a 100644 --- a/Samples/CSharp/Library/Library/Recipe.sml +++ b/Samples/CSharp/Library/Library/Recipe.sml @@ -1,4 +1,4 @@ Name: 'Samples.CSharp.Library.Library' Language: 'C#|0' -TargetFramework: 'net8.0' +TargetFramework: 'net9.0' Version: 1.0.0 \ No newline at end of file diff --git a/Samples/Cpp/DirectX/Interface.cpp b/Samples/Cpp/DirectX/Interface.cpp index 71d79201..cf55e74c 100644 --- a/Samples/Cpp/DirectX/Interface.cpp +++ b/Samples/Cpp/DirectX/Interface.cpp @@ -1,3 +1,7 @@ +module; + +#include + export module Sample.DirectX; import :DXSample; diff --git a/Scripts/Linux/build-packagemanager b/Scripts/Linux/build-packagemanager index fa6394bf..da757e83 100755 --- a/Scripts/Linux/build-packagemanager +++ b/Scripts/Linux/build-packagemanager @@ -10,5 +10,5 @@ SOURCE_DIR=$SCRIPTS_DIR/../../Source PACKAGE_MANAGER_DIR=$SOURCE_DIR/GenerateSharp/PackageManager # Build PackageManager -echo dotnet publish $PACKAGE_MANAGER_DIR -c $FLAVOR -f net8.0 -r linux-x64 --self-contained -eval dotnet publish $PACKAGE_MANAGER_DIR -c $FLAVOR -f net8.0 -r linux-x64 --self-contained +echo dotnet publish $PACKAGE_MANAGER_DIR -c $FLAVOR -f net9.0 -r linux-x64 --self-contained +eval dotnet publish $PACKAGE_MANAGER_DIR -c $FLAVOR -f net9.0 -r linux-x64 --self-contained diff --git a/Scripts/Linux/soup b/Scripts/Linux/soup index 8fd4d8d5..b6bc42a6 100755 --- a/Scripts/Linux/soup +++ b/Scripts/Linux/soup @@ -40,10 +40,10 @@ mkdir -p $RUN_DIR/BuiltIn/Soup/Wren/$SOUP_WREN_VERSION cp -p $GLOBAL_PACKAGES_DIR/Wren/Soup/Wren/$SOUP_WREN_VERSION/Recipe.sml $RUN_DIR/BuiltIn/Soup/Wren/$SOUP_WREN_VERSION/Recipe.sml cp -p -R $GLOBAL_PACKAGES_DIR/Wren/Soup/Wren/$SOUP_WREN_VERSION/out/$CONFIG_HASH/ $RUN_DIR/BuiltIn/Soup/Wren/$SOUP_WREN_VERSION/out/ -cp -p -R $MSBUILD_DIR/bin/Soup.Build.PackageManager/Release/net8.0/linux-x64/publish/ $RUN_DIR/PackageManager +cp -p -R $MSBUILD_DIR/bin/Soup.Build.PackageManager/Release/net9.0/linux-x64/publish/ $RUN_DIR/PackageManager -cp -p -R $MSBUILD_DIR/bin/SoupView/Release/net8.0/linux-x64/publish/ $RUN_DIR/View +cp -p -R $MSBUILD_DIR/bin/SoupView/Release/net9.0/linux-x64/publish/ $RUN_DIR/View -cp -p -R $MSBUILD_DIR/bin/Swhere/Release/net8.0/linux-x64/publish/Swhere $RUN_DIR/swhere +cp -p -R $MSBUILD_DIR/bin/Swhere/Release/net9.0/linux-x64/publish/Swhere $RUN_DIR/swhere eval $RUN_DIR/soup "$@" \ No newline at end of file diff --git a/Scripts/Linux/soupd b/Scripts/Linux/soupd index ead9ad06..fd645d43 100755 --- a/Scripts/Linux/soupd +++ b/Scripts/Linux/soupd @@ -40,10 +40,10 @@ mkdir -p $RUN_DIR/BuiltIn/Soup/Wren/$SOUP_WREN_VERSION cp -p $GLOBAL_PACKAGES_DIR/Wren/Soup/Wren/$SOUP_WREN_VERSION/Recipe.sml $RUN_DIR/BuiltIn/Soup/Wren/$SOUP_WREN_VERSION/Recipe.sml cp -p -R $GLOBAL_PACKAGES_DIR/Wren/Soup/Wren/$SOUP_WREN_VERSION/out/$CONFIG_HASH/ $RUN_DIR/BuiltIn/Soup/Wren/$SOUP_WREN_VERSION/out/ -cp -p -R $MSBUILD_DIR/bin/Soup.Build.PackageManager/Debug/net8.0/linux-x64/publish/ $RUN_DIR/PackageManager +cp -p -R $MSBUILD_DIR/bin/Soup.Build.PackageManager/Debug/net9.0/linux-x64/publish/ $RUN_DIR/PackageManager -cp -p -R $MSBUILD_DIR/bin/SoupView/Debug/net8.0/linux-x64/publish/ $RUN_DIR/View +cp -p -R $MSBUILD_DIR/bin/SoupView/Debug/net9.0/linux-x64/publish/ $RUN_DIR/View -cp -p -R $MSBUILD_DIR/bin/Swhere/Debug/net8.0/linux-x64/publish/Swhere $RUN_DIR/swhere +cp -p -R $MSBUILD_DIR/bin/Swhere/Debug/net9.0/linux-x64/publish/Swhere $RUN_DIR/swhere eval $RUN_DIR/soup "$@" \ No newline at end of file diff --git a/Scripts/Linux/swhere b/Scripts/Linux/swhere index 9e79f2e7..adf65c13 100755 --- a/Scripts/Linux/swhere +++ b/Scripts/Linux/swhere @@ -8,4 +8,4 @@ ROOT_DIR=$SCRIPTS_DIR/../.. OUT_DIR=$ROOT_DIR/out -eval $OUT_DIR/msbuild/bin/Swhere/Release/net8.0/linux-x64/publish/Swhere "$@" \ No newline at end of file +eval $OUT_DIR/msbuild/bin/Swhere/Release/net9.0/linux-x64/publish/Swhere "$@" \ No newline at end of file diff --git a/Scripts/Windows/build-packagemanager.cmd b/Scripts/Windows/build-packagemanager.cmd index 5c91af1d..1e5322ac 100644 --- a/Scripts/Windows/build-packagemanager.cmd +++ b/Scripts/Windows/build-packagemanager.cmd @@ -7,6 +7,6 @@ SET SourceDir=%RootDir%\Source SET PackageManagerDir=%SourceDir%\GenerateSharp\PackageManager REM - Build PackageManager -echo dotnet publish %PackageManagerDir% -c %Flavor% -f net8.0 -r win-x64 --self-contained -call dotnet publish %PackageManagerDir% -c %Flavor% -f net8.0 -r win-x64 --self-contained +echo dotnet publish %PackageManagerDir% -c %Flavor% -f net9.0 -r win-x64 --self-contained +call dotnet publish %PackageManagerDir% -c %Flavor% -f net9.0 -r win-x64 --self-contained if %ERRORLEVEL% NEQ 0 exit /B %ERRORLEVEL% diff --git a/Scripts/Windows/build-swhere.cmd b/Scripts/Windows/build-swhere.cmd index 1276675a..0812bee3 100644 --- a/Scripts/Windows/build-swhere.cmd +++ b/Scripts/Windows/build-swhere.cmd @@ -7,6 +7,6 @@ SET SourceDir=%RootDir%\Source SET SWhereDir=%SourceDir%\GenerateSharp\Swhere REM - Build SWhere tool -echo dotnet publish %SWhereDir% -c %Flavor% -f net8.0 -r win-x64 --self-contained -call dotnet publish %SWhereDir% -c %Flavor% -f net8.0 -r win-x64 --self-contained +echo dotnet publish %SWhereDir% -c %Flavor% -f net9.0 -r win-x64 --self-contained +call dotnet publish %SWhereDir% -c %Flavor% -f net9.0 -r win-x64 --self-contained if %ERRORLEVEL% NEQ 0 exit /B %ERRORLEVEL% diff --git a/Scripts/Windows/build-view.cmd b/Scripts/Windows/build-view.cmd index 0bd9cab7..7df976c9 100644 --- a/Scripts/Windows/build-view.cmd +++ b/Scripts/Windows/build-view.cmd @@ -7,9 +7,9 @@ SET SourceDir=%RootDir%\Source SET SWhereDir=%SourceDir%\GenerateSharp\SoupView REM - Cleanup old publish to work around bug in publish -rmdir /S /Q %RootDir%\out\bin\SoupView\%Flavor%\net8.0\win-x64\publish\ +rmdir /S /Q %RootDir%\out\bin\SoupView\%Flavor%\net9.0\win-x64\publish\ REM - Publish SWhere tool -echo dotnet publish %SWhereDir% -c %Flavor% -f net8.0 -r win-x64 --self-contained true -dotnet publish %SWhereDir% -c %Flavor% -f net8.0 -r win-x64 --self-contained true +echo dotnet publish %SWhereDir% -c %Flavor% -f net9.0 -r win-x64 --self-contained true +dotnet publish %SWhereDir% -c %Flavor% -f net9.0 -r win-x64 --self-contained true if %ERRORLEVEL% NEQ 0 exit /B %ERRORLEVEL% \ No newline at end of file diff --git a/Scripts/Windows/soup-release.cmd b/Scripts/Windows/soup-release.cmd index 8eae1e2d..61cbf044 100644 --- a/Scripts/Windows/soup-release.cmd +++ b/Scripts/Windows/soup-release.cmd @@ -3,6 +3,7 @@ SETLOCAL SET ScriptsDir=%~dp0 SET RootDir=%ScriptsDir%..\.. SET OutDir=%RootDir%\out +SET MSBuildDir=%OutDir%\msbuild SET RunDir=%OutDir%\run SET SourceDir=%RootDir%\Source SET GlobalPackagesDir=%UserProfile%\.soup\packages @@ -30,10 +31,10 @@ robocopy %OutDir%\C++\Local\mkdir\%MKDIR_VERSION%\%ConfigHash%\ %RunDir%\Soup\Bu robocopy %GlobalPackagesDir%\Wren\Soup\Wren\%SOUP_WREN_VERSION%\ %RunDir%\Soup\BuiltIn\Soup\Wren\%SOUP_WREN_VERSION%\ Recipe.sml /NJH /NJS /NDL > NUL robocopy %GlobalOutDir%\Wren\Soup\Wren\%SOUP_WREN_VERSION%\%ConfigHash%\ %RunDir%\Soup\BuiltIn\Soup\Wren\%SOUP_WREN_VERSION%\out\ /MIR /NJH /NJS /NDL > NUL -robocopy %OutDir%\bin\Soup.Build.PackageManager\Release\net8.0\win-x64\publish\ %RunDir%\Soup\PackageManager\ *.dll *.exe /MIR /NJH /NJS /NDL > NUL +robocopy %MSBuildDir%\bin\Soup.Build.PackageManager\Release\net9.0\win-x64\publish\ %RunDir%\Soup\PackageManager\ *.dll *.exe /MIR /NJH /NJS /NDL > NUL -robocopy %OutDir%\bin\SoupView\Release\net8.0\win-x64\publish\ %RunDir%\Soup\View\ *.dll *.exe /MIR /NJH /NJS /NDL > NUL +robocopy %MSBuildDir%\bin\SoupView\Release\net9.0\win-x64\publish\ %RunDir%\Soup\View\ *.dll *.exe /MIR /NJH /NJS /NDL > NUL -robocopy %OutDir%\bin\Swhere\Release\net8.0\win-x64\publish\ %RunDir%\ swhere.exe /NJH /NJS /NDL > NUL +robocopy %MSBuildDir%\bin\Swhere\Release\net9.0\win-x64\publish\ %RunDir%\ swhere.exe /NJH /NJS /NDL > NUL %RunDir%\Soup.cmd %* \ No newline at end of file diff --git a/Scripts/Windows/soup.cmd b/Scripts/Windows/soup.cmd index 1f18ed2f..aafd77ca 100644 --- a/Scripts/Windows/soup.cmd +++ b/Scripts/Windows/soup.cmd @@ -31,10 +31,10 @@ robocopy %OutDir%\C++\Local\mkdir\%MKDIR_VERSION%\%ConfigHash%\ %RunDir%\Soup\Bu robocopy %GlobalPackagesDir%\Wren\Soup\Wren\%SOUP_WREN_VERSION%\ %RunDir%\Soup\BuiltIn\Soup\Wren\%SOUP_WREN_VERSION%\ Recipe.sml /NJH /NJS /NDL > NUL robocopy %GlobalOutDir%\Wren\Soup\Wren\%SOUP_WREN_VERSION%\%ConfigHash%\ %RunDir%\Soup\BuiltIn\Soup\Wren\%SOUP_WREN_VERSION%\out\ /MIR /NJH /NJS /NDL > NUL -robocopy %MSBuildDir%\bin\Soup.Build.PackageManager\Release\net8.0\win-x64\publish\ %RunDir%\Soup\PackageManager\ /MIR /NJH /NJS /NDL > NUL +robocopy %MSBuildDir%\bin\Soup.Build.PackageManager\Release\net9.0\win-x64\publish\ %RunDir%\Soup\PackageManager\ /MIR /NJH /NJS /NDL > NUL -robocopy %MSBuildDir%\bin\SoupView\Release\net8.0\win-x64\publish\ %RunDir%\Soup\View\ /MIR /NJH /NJS /NDL > NUL +robocopy %MSBuildDir%\bin\SoupView\Release\net9.0\win-x64\publish\ %RunDir%\Soup\View\ /MIR /NJH /NJS /NDL > NUL -robocopy %MSBuildDir%\bin\Swhere\Release\net8.0\win-x64\publish\ %RunDir%\ swhere.exe /NJH /NJS /NDL > NUL +robocopy %MSBuildDir%\bin\Swhere\Release\net9.0\win-x64\publish\ %RunDir%\ swhere.exe /NJH /NJS /NDL > NUL %RunDir%\Soup.cmd %* \ No newline at end of file diff --git a/Scripts/Windows/soupd.cmd b/Scripts/Windows/soupd.cmd index e48cea40..0fd5580d 100644 --- a/Scripts/Windows/soupd.cmd +++ b/Scripts/Windows/soupd.cmd @@ -31,10 +31,10 @@ robocopy %OutDir%\C++\Local\mkdir\%MKDIR_VERSION%\%ConfigHash%\ %RunDir%\Soup\Bu robocopy %GlobalPackagesDir%\Wren\Soup\Wren\%SOUP_WREN_VERSION%\ %RunDir%\Soup\BuiltIn\Soup\Wren\%SOUP_WREN_VERSION%\ Recipe.sml /NJH /NJS /NDL > NUL robocopy %GlobalOutDir%\Wren\Soup\Wren\%SOUP_WREN_VERSION%\%ConfigHash%\ %RunDir%\Soup\BuiltIn\Soup\Wren\%SOUP_WREN_VERSION%\out\ /MIR /NJH /NJS /NDL > NUL -robocopy %MSBuildDir%\bin\Soup.Build.PackageManager\Debug\net8.0\win-x64\publish\ %RunDir%\Soup\PackageManager\ /MIR /NJH /NJS /NDL > NUL +robocopy %MSBuildDir%\bin\Soup.Build.PackageManager\Debug\net9.0\win-x64\publish\ %RunDir%\Soup\PackageManager\ /MIR /NJH /NJS /NDL > NUL -robocopy %MSBuildDir%\bin\SoupView\Debug\net8.0\win-x64\publish\ %RunDir%\Soup\View\ /MIR /NJH /NJS /NDL > NUL +robocopy %MSBuildDir%\bin\SoupView\Debug\net9.0\win-x64\publish\ %RunDir%\Soup\View\ /MIR /NJH /NJS /NDL > NUL -robocopy %MSBuildDir%\bin\Swhere\Debug\net8.0\win-x64\publish\ %RunDir%\ swhere.exe /NJH /NJS /NDL > NUL +robocopy %MSBuildDir%\bin\Swhere\Debug\net9.0\win-x64\publish\ %RunDir%\ swhere.exe /NJH /NJS /NDL > NUL %RunDir%\Soup.cmd %* \ No newline at end of file diff --git a/Scripts/Windows/swhere.cmd b/Scripts/Windows/swhere.cmd index db4a6e49..0c2597f5 100644 --- a/Scripts/Windows/swhere.cmd +++ b/Scripts/Windows/swhere.cmd @@ -5,4 +5,4 @@ SET RootDir=%ScriptsDir%..\.. SET OutDir=%RootDir%\out SET MSBuildDir=%OutDir%\msbuild -%MSBuildDir%\bin\Swhere\Release\net8.0\win-x64\publish\swhere.exe %* \ No newline at end of file +%MSBuildDir%\bin\Swhere\Release\net9.0\win-x64\publish\swhere.exe %* \ No newline at end of file diff --git a/Source/GenerateSharp/Api.Client/Soup.Build.Api.Client.csproj b/Source/GenerateSharp/Api.Client/Soup.Build.Api.Client.csproj index 87a1200b..190001c6 100644 --- a/Source/GenerateSharp/Api.Client/Soup.Build.Api.Client.csproj +++ b/Source/GenerateSharp/Api.Client/Soup.Build.Api.Client.csproj @@ -1,9 +1,8 @@  - net8.0 - AnyCPU;x64 + net9.0 - + - + \ No newline at end of file diff --git a/Source/GenerateSharp/BootstrapBuild/BootstrapBuild.csproj b/Source/GenerateSharp/BootstrapBuild/BootstrapBuild.csproj index 7e42d3c7..5a537864 100644 --- a/Source/GenerateSharp/BootstrapBuild/BootstrapBuild.csproj +++ b/Source/GenerateSharp/BootstrapBuild/BootstrapBuild.csproj @@ -1,11 +1,10 @@  Exe - net8.0 - AnyCPU;x64 + net9.0 - + \ No newline at end of file diff --git a/Source/GenerateSharp/BootstrapBuild/PackageLock.sml b/Source/GenerateSharp/BootstrapBuild/PackageLock.sml index 4217df45..55d431b1 100644 --- a/Source/GenerateSharp/BootstrapBuild/PackageLock.sml +++ b/Source/GenerateSharp/BootstrapBuild/PackageLock.sml @@ -16,7 +16,7 @@ Closures: { Build1: { Wren: { 'Soup|CSharp': { Version: 0.15.1 } - 'Soup|CSharp.Nuget': { Version: 0.5.0 } + 'Soup|CSharp.Nuget': { Version: 0.5.2 } } } Tool0: { diff --git a/Source/GenerateSharp/GenerateSharp.sln b/Source/GenerateSharp/GenerateSharp.sln index a8e779fd..e19a0abb 100644 --- a/Source/GenerateSharp/GenerateSharp.sln +++ b/Source/GenerateSharp/GenerateSharp.sln @@ -34,58 +34,58 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Migrate", "Migrate\Migrate. EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Release|x64 = Release|x64 + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {274AD7F0-D11F-4B6B-8BFC-51DEBFE40DF8}.Debug|x64.ActiveCfg = Debug|x64 - {274AD7F0-D11F-4B6B-8BFC-51DEBFE40DF8}.Debug|x64.Build.0 = Debug|x64 - {274AD7F0-D11F-4B6B-8BFC-51DEBFE40DF8}.Release|x64.ActiveCfg = Release|x64 - {274AD7F0-D11F-4B6B-8BFC-51DEBFE40DF8}.Release|x64.Build.0 = Release|x64 - {D01AC47E-1A6A-4EDE-97F5-2D05D1BC7120}.Debug|x64.ActiveCfg = Debug|x64 - {D01AC47E-1A6A-4EDE-97F5-2D05D1BC7120}.Debug|x64.Build.0 = Debug|x64 - {D01AC47E-1A6A-4EDE-97F5-2D05D1BC7120}.Release|x64.ActiveCfg = Release|x64 - {D01AC47E-1A6A-4EDE-97F5-2D05D1BC7120}.Release|x64.Build.0 = Release|x64 - {0DD0DB83-90BE-4FDC-B470-6A25C11C1DE9}.Debug|x64.ActiveCfg = Debug|x64 - {0DD0DB83-90BE-4FDC-B470-6A25C11C1DE9}.Debug|x64.Build.0 = Debug|x64 - {0DD0DB83-90BE-4FDC-B470-6A25C11C1DE9}.Release|x64.ActiveCfg = Release|x64 - {0DD0DB83-90BE-4FDC-B470-6A25C11C1DE9}.Release|x64.Build.0 = Release|x64 - {770620D6-444F-4FE9-80F7-08217CCBFD59}.Debug|x64.ActiveCfg = Debug|x64 - {770620D6-444F-4FE9-80F7-08217CCBFD59}.Debug|x64.Build.0 = Debug|x64 - {770620D6-444F-4FE9-80F7-08217CCBFD59}.Release|x64.ActiveCfg = Release|x64 - {770620D6-444F-4FE9-80F7-08217CCBFD59}.Release|x64.Build.0 = Release|x64 - {7B533719-1983-4851-B9A8-788F032BD2AA}.Debug|x64.ActiveCfg = Debug|x64 - {7B533719-1983-4851-B9A8-788F032BD2AA}.Debug|x64.Build.0 = Debug|x64 - {7B533719-1983-4851-B9A8-788F032BD2AA}.Release|x64.ActiveCfg = Release|x64 - {7B533719-1983-4851-B9A8-788F032BD2AA}.Release|x64.Build.0 = Release|x64 - {2FBD7ED6-C001-4DC8-86B6-CAE7358B4A62}.Debug|x64.ActiveCfg = Debug|x64 - {2FBD7ED6-C001-4DC8-86B6-CAE7358B4A62}.Debug|x64.Build.0 = Debug|x64 - {2FBD7ED6-C001-4DC8-86B6-CAE7358B4A62}.Release|x64.ActiveCfg = Release|x64 - {2FBD7ED6-C001-4DC8-86B6-CAE7358B4A62}.Release|x64.Build.0 = Release|x64 - {3ED8855B-F84C-4650-BC6C-23B6B5D49FAA}.Debug|x64.ActiveCfg = Debug|x64 - {3ED8855B-F84C-4650-BC6C-23B6B5D49FAA}.Debug|x64.Build.0 = Debug|x64 - {3ED8855B-F84C-4650-BC6C-23B6B5D49FAA}.Release|x64.ActiveCfg = Release|x64 - {3ED8855B-F84C-4650-BC6C-23B6B5D49FAA}.Release|x64.Build.0 = Release|x64 - {7368F08B-A15F-4D70-A836-CC3C9E2921E1}.Debug|x64.ActiveCfg = Debug|x64 - {7368F08B-A15F-4D70-A836-CC3C9E2921E1}.Debug|x64.Build.0 = Debug|x64 - {7368F08B-A15F-4D70-A836-CC3C9E2921E1}.Release|x64.ActiveCfg = Release|x64 - {7368F08B-A15F-4D70-A836-CC3C9E2921E1}.Release|x64.Build.0 = Release|x64 - {402DEECF-6F0F-4BFD-ADA1-E7B82B8548DE}.Debug|x64.ActiveCfg = Debug|x64 - {402DEECF-6F0F-4BFD-ADA1-E7B82B8548DE}.Debug|x64.Build.0 = Debug|x64 - {402DEECF-6F0F-4BFD-ADA1-E7B82B8548DE}.Release|x64.ActiveCfg = Release|Any CPU - {402DEECF-6F0F-4BFD-ADA1-E7B82B8548DE}.Release|x64.Build.0 = Release|Any CPU - {1A3B24E3-DFE0-4183-B89A-85DA368150F3}.Debug|x64.ActiveCfg = Debug|x64 - {1A3B24E3-DFE0-4183-B89A-85DA368150F3}.Debug|x64.Build.0 = Debug|x64 - {1A3B24E3-DFE0-4183-B89A-85DA368150F3}.Release|x64.ActiveCfg = Release|x64 - {1A3B24E3-DFE0-4183-B89A-85DA368150F3}.Release|x64.Build.0 = Release|x64 - {09A05351-1253-41EB-8646-17D7FB7F0DF2}.Debug|x64.ActiveCfg = Debug|x64 - {09A05351-1253-41EB-8646-17D7FB7F0DF2}.Debug|x64.Build.0 = Debug|x64 - {09A05351-1253-41EB-8646-17D7FB7F0DF2}.Release|x64.ActiveCfg = Release|x64 - {09A05351-1253-41EB-8646-17D7FB7F0DF2}.Release|x64.Build.0 = Release|x64 - {B597D766-7C98-45F1-BD02-E15193724484}.Debug|x64.ActiveCfg = Debug|x64 - {B597D766-7C98-45F1-BD02-E15193724484}.Debug|x64.Build.0 = Debug|x64 - {B597D766-7C98-45F1-BD02-E15193724484}.Release|x64.ActiveCfg = Release|x64 - {B597D766-7C98-45F1-BD02-E15193724484}.Release|x64.Build.0 = Release|x64 + {274AD7F0-D11F-4B6B-8BFC-51DEBFE40DF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {274AD7F0-D11F-4B6B-8BFC-51DEBFE40DF8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {274AD7F0-D11F-4B6B-8BFC-51DEBFE40DF8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {274AD7F0-D11F-4B6B-8BFC-51DEBFE40DF8}.Release|Any CPU.Build.0 = Release|Any CPU + {D01AC47E-1A6A-4EDE-97F5-2D05D1BC7120}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D01AC47E-1A6A-4EDE-97F5-2D05D1BC7120}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D01AC47E-1A6A-4EDE-97F5-2D05D1BC7120}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D01AC47E-1A6A-4EDE-97F5-2D05D1BC7120}.Release|Any CPU.Build.0 = Release|Any CPU + {0DD0DB83-90BE-4FDC-B470-6A25C11C1DE9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0DD0DB83-90BE-4FDC-B470-6A25C11C1DE9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0DD0DB83-90BE-4FDC-B470-6A25C11C1DE9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0DD0DB83-90BE-4FDC-B470-6A25C11C1DE9}.Release|Any CPU.Build.0 = Release|Any CPU + {770620D6-444F-4FE9-80F7-08217CCBFD59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {770620D6-444F-4FE9-80F7-08217CCBFD59}.Debug|Any CPU.Build.0 = Debug|Any CPU + {770620D6-444F-4FE9-80F7-08217CCBFD59}.Release|Any CPU.ActiveCfg = Release|Any CPU + {770620D6-444F-4FE9-80F7-08217CCBFD59}.Release|Any CPU.Build.0 = Release|Any CPU + {7B533719-1983-4851-B9A8-788F032BD2AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7B533719-1983-4851-B9A8-788F032BD2AA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7B533719-1983-4851-B9A8-788F032BD2AA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7B533719-1983-4851-B9A8-788F032BD2AA}.Release|Any CPU.Build.0 = Release|Any CPU + {2FBD7ED6-C001-4DC8-86B6-CAE7358B4A62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2FBD7ED6-C001-4DC8-86B6-CAE7358B4A62}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2FBD7ED6-C001-4DC8-86B6-CAE7358B4A62}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2FBD7ED6-C001-4DC8-86B6-CAE7358B4A62}.Release|Any CPU.Build.0 = Release|Any CPU + {3ED8855B-F84C-4650-BC6C-23B6B5D49FAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3ED8855B-F84C-4650-BC6C-23B6B5D49FAA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3ED8855B-F84C-4650-BC6C-23B6B5D49FAA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3ED8855B-F84C-4650-BC6C-23B6B5D49FAA}.Release|Any CPU.Build.0 = Release|Any CPU + {7368F08B-A15F-4D70-A836-CC3C9E2921E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7368F08B-A15F-4D70-A836-CC3C9E2921E1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7368F08B-A15F-4D70-A836-CC3C9E2921E1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7368F08B-A15F-4D70-A836-CC3C9E2921E1}.Release|Any CPU.Build.0 = Release|Any CPU + {402DEECF-6F0F-4BFD-ADA1-E7B82B8548DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {402DEECF-6F0F-4BFD-ADA1-E7B82B8548DE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {402DEECF-6F0F-4BFD-ADA1-E7B82B8548DE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {402DEECF-6F0F-4BFD-ADA1-E7B82B8548DE}.Release|Any CPU.Build.0 = Release|Any CPU + {1A3B24E3-DFE0-4183-B89A-85DA368150F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1A3B24E3-DFE0-4183-B89A-85DA368150F3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1A3B24E3-DFE0-4183-B89A-85DA368150F3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1A3B24E3-DFE0-4183-B89A-85DA368150F3}.Release|Any CPU.Build.0 = Release|Any CPU + {09A05351-1253-41EB-8646-17D7FB7F0DF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {09A05351-1253-41EB-8646-17D7FB7F0DF2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {09A05351-1253-41EB-8646-17D7FB7F0DF2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {09A05351-1253-41EB-8646-17D7FB7F0DF2}.Release|Any CPU.Build.0 = Release|Any CPU + {B597D766-7C98-45F1-BD02-E15193724484}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B597D766-7C98-45F1-BD02-E15193724484}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B597D766-7C98-45F1-BD02-E15193724484}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B597D766-7C98-45F1-BD02-E15193724484}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Source/GenerateSharp/Migrate/Migrate.csproj b/Source/GenerateSharp/Migrate/Migrate.csproj index c44b44d5..48142034 100644 --- a/Source/GenerateSharp/Migrate/Migrate.csproj +++ b/Source/GenerateSharp/Migrate/Migrate.csproj @@ -1,14 +1,13 @@  Exe - net8.0 + net9.0 true true false true - AnyCPU;x64 - + \ No newline at end of file diff --git a/Source/GenerateSharp/Migrate/MigrationManager.cs b/Source/GenerateSharp/Migrate/MigrationManager.cs index 858c70df..267f0e85 100644 --- a/Source/GenerateSharp/Migrate/MigrationManager.cs +++ b/Source/GenerateSharp/Migrate/MigrationManager.cs @@ -91,6 +91,7 @@ private static async Task BuildRecipeAsync(Path target, CSProjParser parser) switch (parser.TargetFramework) { case "net8.0": + case "net9.0": recipe.Document.EnsureValueWithSyntax("TargetFramework", parser.TargetFramework); break; default: diff --git a/Source/GenerateSharp/Migrate/PackageLock.sml b/Source/GenerateSharp/Migrate/PackageLock.sml index 9530e743..62cde9aa 100644 --- a/Source/GenerateSharp/Migrate/PackageLock.sml +++ b/Source/GenerateSharp/Migrate/PackageLock.sml @@ -15,7 +15,7 @@ Closures: { Build1: { Wren: { 'Soup|CSharp': { Version: 0.15.1 } - 'Soup|CSharp.Nuget': { Version: 0.5.0 } + 'Soup|CSharp.Nuget': { Version: 0.5.2 } } } Tool0: { diff --git a/Source/GenerateSharp/Migrate/Recipe.sml b/Source/GenerateSharp/Migrate/Recipe.sml index 545a04df..015bb569 100644 --- a/Source/GenerateSharp/Migrate/Recipe.sml +++ b/Source/GenerateSharp/Migrate/Recipe.sml @@ -2,7 +2,7 @@ Name: 'Migrate' Language: 'C#|0' Version: 1.0.0 Type: 'Executable' -TargetFramework: 'net8.0' +TargetFramework: 'net9.0' Dependencies: { Runtime: [ '../Utilities/' diff --git a/Source/GenerateSharp/Opal.UnitTests/Opal.UnitTests.csproj b/Source/GenerateSharp/Opal.UnitTests/Opal.UnitTests.csproj index 5e32b40c..88883263 100644 --- a/Source/GenerateSharp/Opal.UnitTests/Opal.UnitTests.csproj +++ b/Source/GenerateSharp/Opal.UnitTests/Opal.UnitTests.csproj @@ -1,13 +1,12 @@  - net8.0 + net9.0 false - AnyCPU;x64 - - - + + + runtime; build; native; contentfiles; analyzers; buildtransitive all @@ -19,4 +18,4 @@ - + \ No newline at end of file diff --git a/Source/GenerateSharp/Opal/Opal.csproj b/Source/GenerateSharp/Opal/Opal.csproj index 86459121..69134a11 100644 --- a/Source/GenerateSharp/Opal/Opal.csproj +++ b/Source/GenerateSharp/Opal/Opal.csproj @@ -1,6 +1,5 @@  - net8.0 - AnyCPU;x64 + net9.0 - + \ No newline at end of file diff --git a/Source/GenerateSharp/Opal/Recipe.sml b/Source/GenerateSharp/Opal/Recipe.sml index c027e2f0..d96f2409 100644 --- a/Source/GenerateSharp/Opal/Recipe.sml +++ b/Source/GenerateSharp/Opal/Recipe.sml @@ -1,4 +1,4 @@ Name: 'Opal' Language: 'C#|0' Version: 1.0.0 -TargetFramework: 'net8.0' \ No newline at end of file +TargetFramework: 'net9.0' \ No newline at end of file diff --git a/Source/GenerateSharp/Opal/System/IProcessManager.cs b/Source/GenerateSharp/Opal/System/IProcessManager.cs index 7910ec63..5e0cfe73 100644 --- a/Source/GenerateSharp/Opal/System/IProcessManager.cs +++ b/Source/GenerateSharp/Opal/System/IProcessManager.cs @@ -22,7 +22,7 @@ public interface IProcessManager /// The arguments. /// The working directory. public abstract IProcess CreateProcess( - Path executable, + string executable, string arguments, Path workingDirectory); } diff --git a/Source/GenerateSharp/Opal/System/MockProcessManager.cs b/Source/GenerateSharp/Opal/System/MockProcessManager.cs index e97736fa..9e257d15 100644 --- a/Source/GenerateSharp/Opal/System/MockProcessManager.cs +++ b/Source/GenerateSharp/Opal/System/MockProcessManager.cs @@ -71,7 +71,7 @@ public Path GetCurrentProcessFileName() /// The arguments. /// The working directory. public IProcess CreateProcess( - Path executable, + string executable, string arguments, Path workingDirectory) { diff --git a/Source/GenerateSharp/Opal/System/RuntimeProcess.cs b/Source/GenerateSharp/Opal/System/RuntimeProcess.cs index 98784496..b96f7635 100644 --- a/Source/GenerateSharp/Opal/System/RuntimeProcess.cs +++ b/Source/GenerateSharp/Opal/System/RuntimeProcess.cs @@ -14,7 +14,7 @@ namespace Opal.System; public class RuntimeProcess : IProcess { // Input - private readonly Path executable; + private readonly string executable; private readonly string arguments; private readonly Path workingDirectory; @@ -28,7 +28,7 @@ public class RuntimeProcess : IProcess /// The arguments. /// The workingDirectory. public RuntimeProcess( - Path executable, + string executable, string arguments, Path workingDirectory) { @@ -44,7 +44,7 @@ public void Start() { var processInfo = new ProcessStartInfo() { - FileName = this.executable.ToString(), + FileName = this.executable, Arguments = this.arguments, WorkingDirectory = this.workingDirectory.ToString(), RedirectStandardOutput = true, diff --git a/Source/GenerateSharp/Opal/System/RuntimeProcessManager.cs b/Source/GenerateSharp/Opal/System/RuntimeProcessManager.cs index 9260d0d5..9f3371ac 100644 --- a/Source/GenerateSharp/Opal/System/RuntimeProcessManager.cs +++ b/Source/GenerateSharp/Opal/System/RuntimeProcessManager.cs @@ -30,7 +30,7 @@ public Path GetCurrentProcessFileName() /// Creates a process for the provided executable path /// public IProcess CreateProcess( - Path executable, + string executable, string arguments, Path workingDirectory) { diff --git a/Source/GenerateSharp/PackageManager.UnitTests/Soup.Build.PackageManager.UnitTests.csproj b/Source/GenerateSharp/PackageManager.UnitTests/Soup.Build.PackageManager.UnitTests.csproj index b93ed9aa..8ee942d2 100644 --- a/Source/GenerateSharp/PackageManager.UnitTests/Soup.Build.PackageManager.UnitTests.csproj +++ b/Source/GenerateSharp/PackageManager.UnitTests/Soup.Build.PackageManager.UnitTests.csproj @@ -1,17 +1,16 @@  - net8.0 + net9.0 false - AnyCPU;x64 preview - + - - + + runtime; build; native; contentfiles; analyzers; buildtransitive all @@ -19,4 +18,4 @@ - + \ No newline at end of file diff --git a/Source/GenerateSharp/PackageManager/ClosureManager.cs b/Source/GenerateSharp/PackageManager/ClosureManager.cs index 2610c434..69672ed4 100644 --- a/Source/GenerateSharp/PackageManager/ClosureManager.cs +++ b/Source/GenerateSharp/PackageManager/ClosureManager.cs @@ -165,7 +165,7 @@ await CheckGenerateAndRestoreRecursiveLocksAsync( { // Process the local dependency and place the lock in the root var referencePath = new Path(projectVersionValue.Value.AsString().Value); - var dependencyPath = workingDirectory + referencePath; + var dependencyPath = referencePath.HasRoot ? referencePath : workingDirectory + referencePath; var dependencyLockPath = dependencyPath + BuildConstants.PackageLockFileName; diff --git a/Source/GenerateSharp/PackageManager/PackageLock.sml b/Source/GenerateSharp/PackageManager/PackageLock.sml index 909698b0..f9ac0999 100644 --- a/Source/GenerateSharp/PackageManager/PackageLock.sml +++ b/Source/GenerateSharp/PackageManager/PackageLock.sml @@ -12,7 +12,7 @@ Closures: { Build0: { Wren: { 'Soup|CSharp': { Version: 0.15.1 } - 'Soup|CSharp.Nuget': { Version: 0.5.0 } + 'Soup|CSharp.Nuget': { Version: 0.5.2 } } } Tool0: { diff --git a/Source/GenerateSharp/PackageManager/Soup.Build.PackageManager.csproj b/Source/GenerateSharp/PackageManager/Soup.Build.PackageManager.csproj index 9b8004f9..2f8d75ac 100644 --- a/Source/GenerateSharp/PackageManager/Soup.Build.PackageManager.csproj +++ b/Source/GenerateSharp/PackageManager/Soup.Build.PackageManager.csproj @@ -1,12 +1,11 @@  Exe - net8.0 + net9.0 true true false false - AnyCPU;x64 @@ -17,4 +16,4 @@ - + \ No newline at end of file diff --git a/Source/GenerateSharp/SoupView/SoupView.csproj b/Source/GenerateSharp/SoupView/SoupView.csproj index d86fe1bf..b0f117e7 100644 --- a/Source/GenerateSharp/SoupView/SoupView.csproj +++ b/Source/GenerateSharp/SoupView/SoupView.csproj @@ -1,45 +1,44 @@  - - WinExe - net8.0 - true - app.manifest - true - true - true - false - false - true - AnyCPU;x64 - - - - - - - - PreserveNewest - - - - - PreserveNewest - - - - - - - - - - - - - - - - - - - + + WinExe + net9.0 + true + app.manifest + true + true + true + false + false + true + + + + + + + + PreserveNewest + + + + + PreserveNewest + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/GenerateSharp/Swhere.Core.UnitTests/Swhere.UnitTests.csproj b/Source/GenerateSharp/Swhere.Core.UnitTests/Swhere.UnitTests.csproj index 3e0a543d..88fdeca7 100644 --- a/Source/GenerateSharp/Swhere.Core.UnitTests/Swhere.UnitTests.csproj +++ b/Source/GenerateSharp/Swhere.Core.UnitTests/Swhere.UnitTests.csproj @@ -1,13 +1,12 @@  - net8.0 + net9.0 false - AnyCPU;x64 - - - + + + runtime; build; native; contentfiles; analyzers; buildtransitive all @@ -15,4 +14,4 @@ - + \ No newline at end of file diff --git a/Source/GenerateSharp/Swhere.Core.UnitTests/Utilities/DotNetSDKUtilitiesUnitTests.cs b/Source/GenerateSharp/Swhere.Core.UnitTests/Utilities/DotNetSDKUtilitiesUnitTests.cs index 0eacc73e..b7355184 100644 --- a/Source/GenerateSharp/Swhere.Core.UnitTests/Utilities/DotNetSDKUtilitiesUnitTests.cs +++ b/Source/GenerateSharp/Swhere.Core.UnitTests/Utilities/DotNetSDKUtilitiesUnitTests.cs @@ -36,15 +36,11 @@ public async Task FindDotNet_Windows() "CreateProcess: 3 [./] C:/Program Files/dotnet/dotnet.exe --list-runtimes", "Microsoft.AspNetCore.App 3.1.32 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\r\nMicrosoft.AspNetCore.App 5.0.17 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\r\nMicrosoft.AspNetCore.App 6.0.14 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\r\nMicrosoft.AspNetCore.App 6.0.16 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\r\nMicrosoft.AspNetCore.App 6.0.18 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\r\nMicrosoft.AspNetCore.App 7.0.3 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\r\nMicrosoft.AspNetCore.App 7.0.5 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\r\nMicrosoft.AspNetCore.App 7.0.7 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\r\nMicrosoft.NETCore.App 3.1.32 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\r\nMicrosoft.NETCore.App 5.0.17 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\r\nMicrosoft.NETCore.App 6.0.12 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\r\nMicrosoft.NETCore.App 6.0.14 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\r\nMicrosoft.NETCore.App 6.0.15 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\r\nMicrosoft.NETCore.App 6.0.16 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\r\nMicrosoft.NETCore.App 6.0.18 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\r\nMicrosoft.NETCore.App 6.0.20 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\r\nMicrosoft.NETCore.App 7.0.3 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\r\nMicrosoft.NETCore.App 7.0.5 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\r\nMicrosoft.NETCore.App 7.0.7 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\r\nMicrosoft.WindowsDesktop.App 3.1.32 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]\r\nMicrosoft.WindowsDesktop.App 5.0.17 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]\r\nMicrosoft.WindowsDesktop.App 6.0.14 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]\r\nMicrosoft.WindowsDesktop.App 6.0.16 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]\r\nMicrosoft.WindowsDesktop.App 6.0.18 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]\r\nMicrosoft.WindowsDesktop.App 7.0.3 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]\r\nMicrosoft.WindowsDesktop.App 7.0.5 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]\r\nMicrosoft.WindowsDesktop.App 7.0.7 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]\r\n"); - mockFileSystem.RegisterChildren( - new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/"), - [ - new DirectoryEntry() { Path = new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/"), IsDirectory = true, }, - new DirectoryEntry() { Path = new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.7/"), IsDirectory = true, }, - new DirectoryEntry() { Path = new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.8/"), IsDirectory = true, }, - new DirectoryEntry() { Path = new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.9/"), IsDirectory = true, }, - new DirectoryEntry() { Path = new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/"), IsDirectory = true, }, - ]); + mockFileSystem.RegisterChildren(new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/"), []); + mockFileSystem.RegisterChildren(new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/"), []); + mockFileSystem.RegisterChildren(new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/"), []); + mockFileSystem.RegisterChildren(new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/"), []); + mockFileSystem.RegisterChildren(new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/"), []); var platform = OSPlatform.Windows; var result = await DotNetSDKUtilities.FindDotNetAsync(platform); @@ -119,10 +115,10 @@ public async Task FindDotNet_Windows() "Microsoft.NETCore.App.Ref", new List<(string Version, Path InstallDirectory, FrameworkFileList? FrameworkList)>() { - ("5.0.0", new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/"), null), - ("6.0.7", new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.7/"), null), - ("6.0.8", new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.8/"), null), - ("6.0.9", new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.9/"), null), + ("5.0.17", new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/"), null), + ("6.0.14", new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/"), null), + ("6.0.16", new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/"), null), + ("6.0.18", new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/"), null), ("7.0.7", new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/"), null), } }, @@ -172,25 +168,98 @@ public async Task FindDotNet_Windows() "INFO: Found Runtime: Microsoft.WindowsDesktop.App 7.0.3 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", "INFO: Found Runtime: Microsoft.WindowsDesktop.App 7.0.5 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", "INFO: Found Runtime: Microsoft.WindowsDesktop.App 7.0.7 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", - "HIGH: FindDotNetPackVersions: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/", - "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/data/FrameworkList.xml", - "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.7/data/FrameworkList.xml", - "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.8/data/FrameworkList.xml", - "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.9/data/FrameworkList.xml", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/3.1.32/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/5.0.17/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.14/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.16/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.18/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.3/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.5/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.7/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/3.1.32/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/", + "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/data/FrameworkList.xml", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.12/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/", + "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/data/FrameworkList.xml", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.15/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/", + "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/data/FrameworkList.xml", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/", + "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/data/FrameworkList.xml", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.20/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.3/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.5/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/", "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/data/FrameworkList.xml", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/3.1.32/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/5.0.17/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.14/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.16/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.18/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.3/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.5/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.7/", + "WARN: Directory does not exist", ], testListener.Messages); // Verify expected file system requests Assert.Equal( [ - "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/", - "GetChildDirectories: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/", - "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/data/FrameworkList.xml", - "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.7/data/FrameworkList.xml", - "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.8/data/FrameworkList.xml", - "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.9/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/3.1.32/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/5.0.17/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.14/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.16/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.18/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.3/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.5/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.7/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/3.1.32/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.12/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.15/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.20/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.3/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.5/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/", "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/3.1.32/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/5.0.17/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.14/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.16/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.18/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.3/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.5/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.7/", ], mockFileSystem.Requests); diff --git a/Source/GenerateSharp/Swhere.Core.UnitTests/Utilities/SwhereManagerUnitTests.cs b/Source/GenerateSharp/Swhere.Core.UnitTests/Utilities/SwhereManagerUnitTests.cs index 74c1b472..1377f1e9 100644 --- a/Source/GenerateSharp/Swhere.Core.UnitTests/Utilities/SwhereManagerUnitTests.cs +++ b/Source/GenerateSharp/Swhere.Core.UnitTests/Utilities/SwhereManagerUnitTests.cs @@ -56,15 +56,11 @@ public async Task Discover_Windows() new Path("C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/Microsoft.VCToolsVersion.default.txt"), new MockFile(new System.IO.MemoryStream(Encoding.UTF8.GetBytes("14.33.31629\r\n")))); - mockFileSystem.RegisterChildren( - new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/"), - [ - new DirectoryEntry() { Path = new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/"), IsDirectory = true, }, - new DirectoryEntry() { Path = new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.7/"), IsDirectory = true, }, - new DirectoryEntry() { Path = new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.8/"), IsDirectory = true, }, - new DirectoryEntry() { Path = new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.9/"), IsDirectory = true, }, - new DirectoryEntry() { Path = new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/"), IsDirectory = true, }, - ]); + mockFileSystem.RegisterChildren(new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/"), []); + mockFileSystem.RegisterChildren(new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/"), []); + mockFileSystem.RegisterChildren(new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/"), []); + mockFileSystem.RegisterChildren(new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/"), []); + mockFileSystem.RegisterChildren(new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/"), []); var platform = OSPlatform.Windows; bool includePrerelease = false; @@ -78,6 +74,7 @@ public async Task Discover_Windows() "DIAG: Load Local User Config: C:/Users/Me/.soup/LocalUserConfig.sml", "WARN: Local User Config file does not exist", "INFO: No existing local user config.", + "HIGH: Discover DotNet", "INFO: C:/Windows/System32/where.exe dotnet", "HIGH: Using DotNet: C:/Program Files/dotnet/dotnet.exe", "HIGH: Find DotNet SDK Versions", @@ -117,18 +114,68 @@ public async Task Discover_Windows() "INFO: Found Runtime: Microsoft.WindowsDesktop.App 7.0.3 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", "INFO: Found Runtime: Microsoft.WindowsDesktop.App 7.0.5 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", "INFO: Found Runtime: Microsoft.WindowsDesktop.App 7.0.7 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", - "HIGH: FindDotNetPackVersions: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/", - "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/data/FrameworkList.xml", - "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.7/data/FrameworkList.xml", - "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.8/data/FrameworkList.xml", - "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.9/data/FrameworkList.xml", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/3.1.32/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/5.0.17/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.14/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.16/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.18/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.3/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.5/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.7/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/3.1.32/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/", + "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/data/FrameworkList.xml", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.12/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/", + "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/data/FrameworkList.xml", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.15/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/", + "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/data/FrameworkList.xml", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/", + "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/data/FrameworkList.xml", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.20/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.3/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.5/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/", "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/data/FrameworkList.xml", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/3.1.32/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/5.0.17/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.14/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.16/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.18/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.3/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.5/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.7/", + "WARN: Directory does not exist", + "HIGH: Discover Nuget", + "INFO: Nuget not found", + "HIGH: Discover Windows Platform", "INFO: C:/Program Files (x86)/Microsoft Visual Studio/Installer/vswhere.exe -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath", "HIGH: Using VS Installation: C:/Program Files/Microsoft Visual Studio/2022/Community/", "HIGH: Using VC Version: 14.33.31629", "HIGH: FindNewestWindows10KitVersion: C:/Program Files (x86)/Windows Kits/10/", "INFO: CheckFile: 10.0.19041.0", - "INFO: Nuget not found", "INFO: Creating directory C:/Users/Me/.soup/", ], testListener.Messages); @@ -138,19 +185,44 @@ public async Task Discover_Windows() [ "GetUserProfileDirectory", "Exists: C:/Users/Me/.soup/LocalUserConfig.sml", - "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/", - "GetChildDirectories: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/", - "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/data/FrameworkList.xml", - "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.7/data/FrameworkList.xml", - "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.8/data/FrameworkList.xml", - "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.9/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/3.1.32/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/5.0.17/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.14/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.16/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.18/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.3/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.5/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.7/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/3.1.32/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.12/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.15/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.20/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.3/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.5/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/", "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/3.1.32/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/5.0.17/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.14/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.16/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.18/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.3/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.5/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.7/", + "GetUserProfileDirectory", + "Exists: C:/Users/Me/.nuget/packages/", "Exists: C:/Program Files (x86)/Microsoft Visual Studio/Installer/vswhere.exe", "Exists: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/Microsoft.VCToolsVersion.default.txt", "OpenRead: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/Microsoft.VCToolsVersion.default.txt", "GetChildDirectories: C:/Program Files (x86)/Windows Kits/10/include/", - "GetUserProfileDirectory", - "Exists: C:/Users/Me/.nuget/packages/", "Exists: C:/Users/Me/.soup/", "CreateDirectory: C:/Users/Me/.soup/", "OpenWriteTruncate: C:/Users/Me/.soup/LocalUserConfig.sml", @@ -192,139 +264,140 @@ public async Task Discover_Windows() _ = localUserConfig.Content.Seek(0, System.IO.SeekOrigin.Begin); using var reader = new System.IO.StreamReader(localUserConfig.Content); var localUserConfigContent = await reader.ReadToEndAsync(); - var expected = -@"SDKs: [ - { - Name: 'DotNet' - SourceDirectories: [ - 'C:/Program Files/dotnet/' - ] - Properties: { - DotNetExecutable: 'C:/Program Files/dotnet/dotnet.exe' - SDKs: { - '5.0.0': 'C:/Program Files/dotnet/sdk/5.0.0/' - '6.0.8': 'C:/Program Files/dotnet/sdk/6.0.8/' - '7.0.201': 'C:/Program Files/dotnet/sdk/7.0.201/' - '7.0.300-preview.23179.2': 'C:/Program Files/dotnet/sdk/7.0.300-preview.23179.2/' - '7.0.304': 'C:/Program Files/dotnet/sdk/7.0.304/' - '7.0.400-preview.23274.1': 'C:/Program Files/dotnet/sdk/7.0.400-preview.23274.1/' - } - Runtimes: { - 'Microsoft.AspNetCore.App': { - '3.1.32': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '5.0.17': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '6.0.14': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '6.0.16': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '6.0.18': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '7.0.3': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '7.0.5': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '7.0.7': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - } - 'Microsoft.NETCore.App': { - '3.1.32': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '5.0.17': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '6.0.12': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '6.0.14': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '6.0.15': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '6.0.16': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '6.0.18': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '6.0.20': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '7.0.3': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '7.0.5': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '7.0.7': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - } - 'Microsoft.WindowsDesktop.App': { - '3.1.32': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '5.0.17': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '6.0.14': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '6.0.16': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '6.0.18': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '7.0.3': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '7.0.5': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '7.0.7': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - } - } - TargetingPacks: { - 'Microsoft.NETCore.App.Ref': { - '5.0.0': { - Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/' - Analyzer: [ - - ] - Managed: [ - - ] - } - '6.0.7': { - Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.7/' - Analyzer: [ - - ] - Managed: [ - - ] + var expected = """ + SDKs: [ + { + Name: 'DotNet' + SourceDirectories: [ + 'C:/Program Files/dotnet/' + ] + Properties: { + DotNetExecutable: 'C:/Program Files/dotnet/dotnet.exe' + SDKs: { + '5.0.0': 'C:/Program Files/dotnet/sdk/5.0.0/' + '6.0.8': 'C:/Program Files/dotnet/sdk/6.0.8/' + '7.0.201': 'C:/Program Files/dotnet/sdk/7.0.201/' + '7.0.300-preview.23179.2': 'C:/Program Files/dotnet/sdk/7.0.300-preview.23179.2/' + '7.0.304': 'C:/Program Files/dotnet/sdk/7.0.304/' + '7.0.400-preview.23274.1': 'C:/Program Files/dotnet/sdk/7.0.400-preview.23274.1/' + } + Runtimes: { + 'Microsoft.AspNetCore.App': { + '3.1.32': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '5.0.17': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '6.0.14': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '6.0.16': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '6.0.18': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '7.0.3': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '7.0.5': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '7.0.7': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + } + 'Microsoft.NETCore.App': { + '3.1.32': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '5.0.17': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '6.0.12': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '6.0.14': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '6.0.15': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '6.0.16': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '6.0.18': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '6.0.20': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '7.0.3': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '7.0.5': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '7.0.7': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + } + 'Microsoft.WindowsDesktop.App': { + '3.1.32': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '5.0.17': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '6.0.14': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '6.0.16': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '6.0.18': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '7.0.3': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '7.0.5': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '7.0.7': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + } + } + TargetingPacks: { + 'Microsoft.NETCore.App.Ref': { + '5.0.17': { + Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/' + Analyzer: [ + + ] + Managed: [ + + ] + } + '6.0.14': { + Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/' + Analyzer: [ + + ] + Managed: [ + + ] + } + '6.0.16': { + Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/' + Analyzer: [ + + ] + Managed: [ + + ] + } + '6.0.18': { + Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/' + Analyzer: [ + + ] + Managed: [ + + ] + } + '7.0.7': { + Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/' + Analyzer: [ + + ] + Managed: [ + + ] + } + } + } } - '6.0.8': { - Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.8/' - Analyzer: [ - - ] - Managed: [ - - ] + } + { + Name: 'MSVC' + SourceDirectories: [ + 'C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.33.31629/' + ] + Properties: { + Version: '14.33.31629' + VCToolsRoot: 'C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.33.31629/' } - '6.0.9': { - Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.9/' - Analyzer: [ - - ] - Managed: [ - - ] + } + { + Name: 'Windows' + SourceDirectories: [ + 'C:/Program Files (x86)/Windows Kits/10/' + ] + Properties: { + Version: '10.0.19041.0' + RootPath: 'C:/Program Files (x86)/Windows Kits/10/' } - '7.0.7': { - Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/' - Analyzer: [ - - ] - Managed: [ - - ] + } + { + Name: 'NetFXTools' + SourceDirectories: [ + 'C:/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools/' + ] + Properties: { + ToolsRoot: 'C:/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools/' } } - } - } - } - { - Name: 'MSVC' - SourceDirectories: [ - 'C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.33.31629/' - ] - Properties: { - Version: '14.33.31629' - VCToolsRoot: 'C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.33.31629/' - } - } - { - Name: 'Windows' - SourceDirectories: [ - 'C:/Program Files (x86)/Windows Kits/10/' - ] - Properties: { - Version: '10.0.19041.0' - RootPath: 'C:/Program Files (x86)/Windows Kits/10/' - } - } - { - Name: 'NetFXTools' - SourceDirectories: [ - 'C:/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools/' - ] - Properties: { - ToolsRoot: 'C:/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools/' - } - } -]"; + ] + """; Assert.Equal(expected, localUserConfigContent); } @@ -370,15 +443,11 @@ public async Task Discover_Prerelease_Windows() new Path("C:/Program Files/Microsoft Visual Studio/2022/Preview/VC/Auxiliary/Build/Microsoft.VCToolsVersion.default.txt"), new MockFile(new System.IO.MemoryStream(Encoding.UTF8.GetBytes("14.34.31823\r\n")))); - mockFileSystem.RegisterChildren( - new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/"), - [ - new DirectoryEntry() { Path = new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/"), IsDirectory = true, }, - new DirectoryEntry() { Path = new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.7/"), IsDirectory = true, }, - new DirectoryEntry() { Path = new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.8/"), IsDirectory = true, }, - new DirectoryEntry() { Path = new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.9/"), IsDirectory = true, }, - new DirectoryEntry() { Path = new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/"), IsDirectory = true, }, - ]); + mockFileSystem.RegisterChildren(new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/"), []); + mockFileSystem.RegisterChildren(new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/"), []); + mockFileSystem.RegisterChildren(new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/"), []); + mockFileSystem.RegisterChildren(new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/"), []); + mockFileSystem.RegisterChildren(new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/"), []); var platform = OSPlatform.Windows; bool includePrerelease = true; @@ -387,61 +456,112 @@ public async Task Discover_Prerelease_Windows() // Verify expected logs Assert.Equal( [ - "DIAG: Load Local User Config: C:/Users/Me/.soup/LocalUserConfig.sml", - "WARN: Local User Config file does not exist", - "INFO: No existing local user config.", - "INFO: C:/Windows/System32/where.exe dotnet", - "HIGH: Using DotNet: C:/Program Files/dotnet/dotnet.exe", - "HIGH: Find DotNet SDK Versions", - "INFO: C:/Program Files/dotnet/dotnet.exe --list-sdks", - "INFO: Found SDK: 5.0.0 C:/Program Files/dotnet/sdk/5.0.0/", - "INFO: Found SDK: 6.0.8 C:/Program Files/dotnet/sdk/6.0.8/", - "INFO: Found SDK: 7.0.201 C:/Program Files/dotnet/sdk/7.0.201/", - "INFO: Found SDK: 7.0.300-preview.23179.2 C:/Program Files/dotnet/sdk/7.0.300-preview.23179.2/", - "INFO: Found SDK: 7.0.304 C:/Program Files/dotnet/sdk/7.0.304/", - "INFO: Found SDK: 7.0.400-preview.23274.1 C:/Program Files/dotnet/sdk/7.0.400-preview.23274.1/", - "HIGH: Find DotNet Runtime Versions", - "INFO: C:/Program Files/dotnet/dotnet.exe --list-runtimes", - "INFO: Found Runtime: Microsoft.AspNetCore.App 3.1.32 C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/", - "INFO: Found Runtime: Microsoft.AspNetCore.App 5.0.17 C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/", - "INFO: Found Runtime: Microsoft.AspNetCore.App 6.0.14 C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/", - "INFO: Found Runtime: Microsoft.AspNetCore.App 6.0.16 C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/", - "INFO: Found Runtime: Microsoft.AspNetCore.App 6.0.18 C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/", - "INFO: Found Runtime: Microsoft.AspNetCore.App 7.0.3 C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/", - "INFO: Found Runtime: Microsoft.AspNetCore.App 7.0.5 C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/", - "INFO: Found Runtime: Microsoft.AspNetCore.App 7.0.7 C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/", - "INFO: Found Runtime: Microsoft.NETCore.App 3.1.32 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", - "INFO: Found Runtime: Microsoft.NETCore.App 5.0.17 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", - "INFO: Found Runtime: Microsoft.NETCore.App 6.0.12 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", - "INFO: Found Runtime: Microsoft.NETCore.App 6.0.14 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", - "INFO: Found Runtime: Microsoft.NETCore.App 6.0.15 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", - "INFO: Found Runtime: Microsoft.NETCore.App 6.0.16 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", - "INFO: Found Runtime: Microsoft.NETCore.App 6.0.18 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", - "INFO: Found Runtime: Microsoft.NETCore.App 6.0.20 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", - "INFO: Found Runtime: Microsoft.NETCore.App 7.0.3 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", - "INFO: Found Runtime: Microsoft.NETCore.App 7.0.5 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", - "INFO: Found Runtime: Microsoft.NETCore.App 7.0.7 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", - "INFO: Found Runtime: Microsoft.WindowsDesktop.App 3.1.32 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", - "INFO: Found Runtime: Microsoft.WindowsDesktop.App 5.0.17 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", - "INFO: Found Runtime: Microsoft.WindowsDesktop.App 6.0.14 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", - "INFO: Found Runtime: Microsoft.WindowsDesktop.App 6.0.16 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", - "INFO: Found Runtime: Microsoft.WindowsDesktop.App 6.0.18 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", - "INFO: Found Runtime: Microsoft.WindowsDesktop.App 7.0.3 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", - "INFO: Found Runtime: Microsoft.WindowsDesktop.App 7.0.5 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", - "INFO: Found Runtime: Microsoft.WindowsDesktop.App 7.0.7 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", - "HIGH: FindDotNetPackVersions: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/", - "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/data/FrameworkList.xml", - "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.7/data/FrameworkList.xml", - "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.8/data/FrameworkList.xml", - "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.9/data/FrameworkList.xml", - "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/data/FrameworkList.xml", - "INFO: C:/Program Files (x86)/Microsoft Visual Studio/Installer/vswhere.exe -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath -prerelease", - "HIGH: Using VS Installation: C:/Program Files/Microsoft Visual Studio/2022/Preview/", - "HIGH: Using VC Version: 14.34.31823", - "HIGH: FindNewestWindows10KitVersion: C:/Program Files (x86)/Windows Kits/10/", - "INFO: CheckFile: 10.0.19041.0", - "INFO: Nuget not found", - "INFO: Creating directory C:/Users/Me/.soup/", + "DIAG: Load Local User Config: C:/Users/Me/.soup/LocalUserConfig.sml", +"WARN: Local User Config file does not exist", +"INFO: No existing local user config.", +"HIGH: Discover DotNet", +"INFO: C:/Windows/System32/where.exe dotnet", +"HIGH: Using DotNet: C:/Program Files/dotnet/dotnet.exe", +"HIGH: Find DotNet SDK Versions", +"INFO: C:/Program Files/dotnet/dotnet.exe --list-sdks", +"INFO: Found SDK: 5.0.0 C:/Program Files/dotnet/sdk/5.0.0/", +"INFO: Found SDK: 6.0.8 C:/Program Files/dotnet/sdk/6.0.8/", +"INFO: Found SDK: 7.0.201 C:/Program Files/dotnet/sdk/7.0.201/", +"INFO: Found SDK: 7.0.300-preview.23179.2 C:/Program Files/dotnet/sdk/7.0.300-preview.23179.2/", +"INFO: Found SDK: 7.0.304 C:/Program Files/dotnet/sdk/7.0.304/", +"INFO: Found SDK: 7.0.400-preview.23274.1 C:/Program Files/dotnet/sdk/7.0.400-preview.23274.1/", +"HIGH: Find DotNet Runtime Versions", +"INFO: C:/Program Files/dotnet/dotnet.exe --list-runtimes", +"INFO: Found Runtime: Microsoft.AspNetCore.App 3.1.32 C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/", +"INFO: Found Runtime: Microsoft.AspNetCore.App 5.0.17 C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/", +"INFO: Found Runtime: Microsoft.AspNetCore.App 6.0.14 C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/", +"INFO: Found Runtime: Microsoft.AspNetCore.App 6.0.16 C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/", +"INFO: Found Runtime: Microsoft.AspNetCore.App 6.0.18 C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/", +"INFO: Found Runtime: Microsoft.AspNetCore.App 7.0.3 C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/", +"INFO: Found Runtime: Microsoft.AspNetCore.App 7.0.5 C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/", +"INFO: Found Runtime: Microsoft.AspNetCore.App 7.0.7 C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/", +"INFO: Found Runtime: Microsoft.NETCore.App 3.1.32 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", +"INFO: Found Runtime: Microsoft.NETCore.App 5.0.17 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", +"INFO: Found Runtime: Microsoft.NETCore.App 6.0.12 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", +"INFO: Found Runtime: Microsoft.NETCore.App 6.0.14 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", +"INFO: Found Runtime: Microsoft.NETCore.App 6.0.15 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", +"INFO: Found Runtime: Microsoft.NETCore.App 6.0.16 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", +"INFO: Found Runtime: Microsoft.NETCore.App 6.0.18 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", +"INFO: Found Runtime: Microsoft.NETCore.App 6.0.20 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", +"INFO: Found Runtime: Microsoft.NETCore.App 7.0.3 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", +"INFO: Found Runtime: Microsoft.NETCore.App 7.0.5 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", +"INFO: Found Runtime: Microsoft.NETCore.App 7.0.7 C:/Program Files/dotnet/shared/Microsoft.NETCore.App/", +"INFO: Found Runtime: Microsoft.WindowsDesktop.App 3.1.32 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", +"INFO: Found Runtime: Microsoft.WindowsDesktop.App 5.0.17 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", +"INFO: Found Runtime: Microsoft.WindowsDesktop.App 6.0.14 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", +"INFO: Found Runtime: Microsoft.WindowsDesktop.App 6.0.16 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", +"INFO: Found Runtime: Microsoft.WindowsDesktop.App 6.0.18 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", +"INFO: Found Runtime: Microsoft.WindowsDesktop.App 7.0.3 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", +"INFO: Found Runtime: Microsoft.WindowsDesktop.App 7.0.5 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", +"INFO: Found Runtime: Microsoft.WindowsDesktop.App 7.0.7 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/3.1.32/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/5.0.17/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.14/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.16/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.18/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.3/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.5/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.7/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/3.1.32/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/", +"WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/data/FrameworkList.xml", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.12/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/", +"WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/data/FrameworkList.xml", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.15/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/", +"WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/data/FrameworkList.xml", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/", +"WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/data/FrameworkList.xml", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.20/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.3/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.5/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/", +"WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/data/FrameworkList.xml", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/3.1.32/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/5.0.17/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.14/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.16/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.18/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.3/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.5/", +"WARN: Directory does not exist", +"HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.7/", +"WARN: Directory does not exist", +"HIGH: Discover Nuget", +"INFO: Nuget not found", +"HIGH: Discover Windows Platform", +"INFO: C:/Program Files (x86)/Microsoft Visual Studio/Installer/vswhere.exe -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath -prerelease", +"HIGH: Using VS Installation: C:/Program Files/Microsoft Visual Studio/2022/Preview/", +"HIGH: Using VC Version: 14.34.31823", +"HIGH: FindNewestWindows10KitVersion: C:/Program Files (x86)/Windows Kits/10/", +"INFO: CheckFile: 10.0.19041.0", +"INFO: Creating directory C:/Users/Me/.soup/", ], testListener.Messages); @@ -450,19 +570,44 @@ public async Task Discover_Prerelease_Windows() [ "GetUserProfileDirectory", "Exists: C:/Users/Me/.soup/LocalUserConfig.sml", - "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/", - "GetChildDirectories: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/", - "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/data/FrameworkList.xml", - "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.7/data/FrameworkList.xml", - "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.8/data/FrameworkList.xml", - "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.9/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/3.1.32/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/5.0.17/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.14/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.16/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.18/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.3/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.5/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.7/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/3.1.32/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.12/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.15/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.20/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.3/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.5/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/", "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/3.1.32/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/5.0.17/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.14/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.16/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.18/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.3/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.5/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.7/", + "GetUserProfileDirectory", + "Exists: C:/Users/Me/.nuget/packages/", "Exists: C:/Program Files (x86)/Microsoft Visual Studio/Installer/vswhere.exe", "Exists: C:/Program Files/Microsoft Visual Studio/2022/Preview/VC/Auxiliary/Build/Microsoft.VCToolsVersion.default.txt", "OpenRead: C:/Program Files/Microsoft Visual Studio/2022/Preview/VC/Auxiliary/Build/Microsoft.VCToolsVersion.default.txt", "GetChildDirectories: C:/Program Files (x86)/Windows Kits/10/include/", - "GetUserProfileDirectory", - "Exists: C:/Users/Me/.nuget/packages/", "Exists: C:/Users/Me/.soup/", "CreateDirectory: C:/Users/Me/.soup/", "OpenWriteTruncate: C:/Users/Me/.soup/LocalUserConfig.sml", @@ -505,139 +650,140 @@ public async Task Discover_Prerelease_Windows() _ = localUserConfig.Content.Seek(0, System.IO.SeekOrigin.Begin); using var reader = new System.IO.StreamReader(localUserConfig.Content); var localUserConfigContent = await reader.ReadToEndAsync(); - var expected = -@"SDKs: [ - { - Name: 'DotNet' - SourceDirectories: [ - 'C:/Program Files/dotnet/' - ] - Properties: { - DotNetExecutable: 'C:/Program Files/dotnet/dotnet.exe' - SDKs: { - '5.0.0': 'C:/Program Files/dotnet/sdk/5.0.0/' - '6.0.8': 'C:/Program Files/dotnet/sdk/6.0.8/' - '7.0.201': 'C:/Program Files/dotnet/sdk/7.0.201/' - '7.0.300-preview.23179.2': 'C:/Program Files/dotnet/sdk/7.0.300-preview.23179.2/' - '7.0.304': 'C:/Program Files/dotnet/sdk/7.0.304/' - '7.0.400-preview.23274.1': 'C:/Program Files/dotnet/sdk/7.0.400-preview.23274.1/' - } - Runtimes: { - 'Microsoft.AspNetCore.App': { - '3.1.32': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '5.0.17': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '6.0.14': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '6.0.16': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '6.0.18': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '7.0.3': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '7.0.5': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '7.0.7': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - } - 'Microsoft.NETCore.App': { - '3.1.32': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '5.0.17': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '6.0.12': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '6.0.14': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '6.0.15': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '6.0.16': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '6.0.18': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '6.0.20': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '7.0.3': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '7.0.5': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '7.0.7': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - } - 'Microsoft.WindowsDesktop.App': { - '3.1.32': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '5.0.17': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '6.0.14': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '6.0.16': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '6.0.18': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '7.0.3': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '7.0.5': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '7.0.7': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - } - } - TargetingPacks: { - 'Microsoft.NETCore.App.Ref': { - '5.0.0': { - Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/' - Analyzer: [ - - ] - Managed: [ - - ] - } - '6.0.7': { - Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.7/' - Analyzer: [ - - ] - Managed: [ - - ] + var expected = """ + SDKs: [ + { + Name: 'DotNet' + SourceDirectories: [ + 'C:/Program Files/dotnet/' + ] + Properties: { + DotNetExecutable: 'C:/Program Files/dotnet/dotnet.exe' + SDKs: { + '5.0.0': 'C:/Program Files/dotnet/sdk/5.0.0/' + '6.0.8': 'C:/Program Files/dotnet/sdk/6.0.8/' + '7.0.201': 'C:/Program Files/dotnet/sdk/7.0.201/' + '7.0.300-preview.23179.2': 'C:/Program Files/dotnet/sdk/7.0.300-preview.23179.2/' + '7.0.304': 'C:/Program Files/dotnet/sdk/7.0.304/' + '7.0.400-preview.23274.1': 'C:/Program Files/dotnet/sdk/7.0.400-preview.23274.1/' + } + Runtimes: { + 'Microsoft.AspNetCore.App': { + '3.1.32': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '5.0.17': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '6.0.14': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '6.0.16': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '6.0.18': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '7.0.3': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '7.0.5': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '7.0.7': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + } + 'Microsoft.NETCore.App': { + '3.1.32': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '5.0.17': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '6.0.12': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '6.0.14': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '6.0.15': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '6.0.16': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '6.0.18': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '6.0.20': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '7.0.3': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '7.0.5': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '7.0.7': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + } + 'Microsoft.WindowsDesktop.App': { + '3.1.32': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '5.0.17': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '6.0.14': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '6.0.16': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '6.0.18': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '7.0.3': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '7.0.5': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '7.0.7': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + } + } + TargetingPacks: { + 'Microsoft.NETCore.App.Ref': { + '5.0.17': { + Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/' + Analyzer: [ + + ] + Managed: [ + + ] + } + '6.0.14': { + Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/' + Analyzer: [ + + ] + Managed: [ + + ] + } + '6.0.16': { + Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/' + Analyzer: [ + + ] + Managed: [ + + ] + } + '6.0.18': { + Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/' + Analyzer: [ + + ] + Managed: [ + + ] + } + '7.0.7': { + Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/' + Analyzer: [ + + ] + Managed: [ + + ] + } + } + } } - '6.0.8': { - Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.8/' - Analyzer: [ - - ] - Managed: [ - - ] + } + { + Name: 'MSVC' + SourceDirectories: [ + 'C:/Program Files/Microsoft Visual Studio/2022/Preview/VC/Tools/MSVC/14.34.31823/' + ] + Properties: { + Version: '14.34.31823' + VCToolsRoot: 'C:/Program Files/Microsoft Visual Studio/2022/Preview/VC/Tools/MSVC/14.34.31823/' } - '6.0.9': { - Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.9/' - Analyzer: [ - - ] - Managed: [ - - ] + } + { + Name: 'Windows' + SourceDirectories: [ + 'C:/Program Files (x86)/Windows Kits/10/' + ] + Properties: { + Version: '10.0.19041.0' + RootPath: 'C:/Program Files (x86)/Windows Kits/10/' } - '7.0.7': { - Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/' - Analyzer: [ - - ] - Managed: [ - - ] + } + { + Name: 'NetFXTools' + SourceDirectories: [ + 'C:/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools/' + ] + Properties: { + ToolsRoot: 'C:/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools/' } } - } - } - } - { - Name: 'MSVC' - SourceDirectories: [ - 'C:/Program Files/Microsoft Visual Studio/2022/Preview/VC/Tools/MSVC/14.34.31823/' - ] - Properties: { - Version: '14.34.31823' - VCToolsRoot: 'C:/Program Files/Microsoft Visual Studio/2022/Preview/VC/Tools/MSVC/14.34.31823/' - } - } - { - Name: 'Windows' - SourceDirectories: [ - 'C:/Program Files (x86)/Windows Kits/10/' - ] - Properties: { - Version: '10.0.19041.0' - RootPath: 'C:/Program Files (x86)/Windows Kits/10/' - } - } - { - Name: 'NetFXTools' - SourceDirectories: [ - 'C:/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools/' - ] - Properties: { - ToolsRoot: 'C:/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools/' - } - } -]"; + ] + """; Assert.Equal(expected, localUserConfigContent); } @@ -743,15 +889,11 @@ public async Task Discover_UpdateExisting() new Path("C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/Microsoft.VCToolsVersion.default.txt"), new MockFile(new System.IO.MemoryStream(Encoding.UTF8.GetBytes("14.33.31629\r\n")))); - mockFileSystem.RegisterChildren( - new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/"), - [ - new DirectoryEntry() { Path = new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/"), IsDirectory = true, }, - new DirectoryEntry() { Path = new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.7/"), IsDirectory = true, }, - new DirectoryEntry() { Path = new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.8/"), IsDirectory = true, }, - new DirectoryEntry() { Path = new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.9/"), IsDirectory = true, }, - new DirectoryEntry() { Path = new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/"), IsDirectory = true, }, - ]); + mockFileSystem.RegisterChildren(new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/"), []); + mockFileSystem.RegisterChildren(new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/"), []); + mockFileSystem.RegisterChildren(new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/"), []); + mockFileSystem.RegisterChildren(new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/"), []); + mockFileSystem.RegisterChildren(new Path("C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/"), []); var platform = OSPlatform.Windows; bool includePrerelease = false; @@ -761,6 +903,7 @@ public async Task Discover_UpdateExisting() Assert.Equal( [ "DIAG: Load Local User Config: C:/Users/Me/.soup/LocalUserConfig.sml", + "HIGH: Discover DotNet", "INFO: C:/Windows/System32/where.exe dotnet", "HIGH: Using DotNet: C:/Program Files/dotnet/dotnet.exe", "HIGH: Find DotNet SDK Versions", @@ -800,18 +943,68 @@ public async Task Discover_UpdateExisting() "INFO: Found Runtime: Microsoft.WindowsDesktop.App 7.0.3 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", "INFO: Found Runtime: Microsoft.WindowsDesktop.App 7.0.5 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", "INFO: Found Runtime: Microsoft.WindowsDesktop.App 7.0.7 C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/", - "HIGH: FindDotNetPackVersions: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/", - "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/data/FrameworkList.xml", - "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.7/data/FrameworkList.xml", - "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.8/data/FrameworkList.xml", - "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.9/data/FrameworkList.xml", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/3.1.32/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/5.0.17/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.14/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.16/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.18/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.3/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.5/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.7/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/3.1.32/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/", + "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/data/FrameworkList.xml", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.12/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/", + "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/data/FrameworkList.xml", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.15/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/", + "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/data/FrameworkList.xml", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/", + "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/data/FrameworkList.xml", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.20/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.3/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.5/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/", "WARN: Missing FrameworkList file: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/data/FrameworkList.xml", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/3.1.32/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/5.0.17/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.14/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.16/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.18/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.3/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.5/", + "WARN: Directory does not exist", + "HIGH: FindDotNetPack: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.7/", + "WARN: Directory does not exist", + "HIGH: Discover Nuget", + "INFO: Nuget not found", + "HIGH: Discover Windows Platform", "INFO: C:/Program Files (x86)/Microsoft Visual Studio/Installer/vswhere.exe -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath", "HIGH: Using VS Installation: C:/Program Files/Microsoft Visual Studio/2022/Community/", "HIGH: Using VC Version: 14.33.31629", "HIGH: FindNewestWindows10KitVersion: C:/Program Files (x86)/Windows Kits/10/", "INFO: CheckFile: 10.0.19041.0", - "INFO: Nuget not found", "INFO: Creating directory C:/Users/Me/.soup/", ], testListener.Messages); @@ -822,19 +1015,44 @@ public async Task Discover_UpdateExisting() "GetUserProfileDirectory", "Exists: C:/Users/Me/.soup/LocalUserConfig.sml", "OpenRead: C:/Users/Me/.soup/LocalUserConfig.sml", - "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/", - "GetChildDirectories: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/", - "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/data/FrameworkList.xml", - "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.7/data/FrameworkList.xml", - "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.8/data/FrameworkList.xml", - "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.9/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/3.1.32/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/5.0.17/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.14/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.16/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/6.0.18/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.3/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.5/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/7.0.7/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/3.1.32/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.12/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.15/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.20/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.3/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.5/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/", "Exists: C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/data/FrameworkList.xml", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/3.1.32/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/5.0.17/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.14/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.16/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/6.0.18/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.3/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.5/", + "Exists: C:/Program Files/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/7.0.7/", + "GetUserProfileDirectory", + "Exists: C:/Users/Me/.nuget/packages/", "Exists: C:/Program Files (x86)/Microsoft Visual Studio/Installer/vswhere.exe", "Exists: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/Microsoft.VCToolsVersion.default.txt", "OpenRead: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/Microsoft.VCToolsVersion.default.txt", "GetChildDirectories: C:/Program Files (x86)/Windows Kits/10/include/", - "GetUserProfileDirectory", - "Exists: C:/Users/Me/.nuget/packages/", "Exists: C:/Users/Me/.soup/", "CreateDirectory: C:/Users/Me/.soup/", "OpenWriteTruncate: C:/Users/Me/.soup/LocalUserConfig.sml", @@ -876,149 +1094,150 @@ public async Task Discover_UpdateExisting() _ = localUserConfig.Content.Seek(0, System.IO.SeekOrigin.Begin); using var reader = new System.IO.StreamReader(localUserConfig.Content); var localUserConfigContent = await reader.ReadToEndAsync(); - var expected = -@"SDKs: [ - { - Name: 'CustomSDK' - SourceDirectories: [ - 'C:/SomeWhere/' - ] - Properties: { - ToolsRoot: 'C:/SomeWhere/' - } - } - { - Name: 'DotNet' - SourceDirectories: [ - 'C:/Program Files/dotnet/' - ] - Properties: { - DotNetExecutable: 'C:/Program Files/dotnet/dotnet.exe' - SDKs: { - '5.0.0': 'C:/Program Files/dotnet/sdk/5.0.0/' - '6.0.8': 'C:/Program Files/dotnet/sdk/6.0.8/' - '7.0.201': 'C:/Program Files/dotnet/sdk/7.0.201/' - '7.0.300-preview.23179.2': 'C:/Program Files/dotnet/sdk/7.0.300-preview.23179.2/' - '7.0.304': 'C:/Program Files/dotnet/sdk/7.0.304/' - '7.0.400-preview.23274.1': 'C:/Program Files/dotnet/sdk/7.0.400-preview.23274.1/' - } - Runtimes: { - 'Microsoft.AspNetCore.App': { - '3.1.32': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '5.0.17': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '6.0.14': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '6.0.16': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '6.0.18': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '7.0.3': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '7.0.5': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - '7.0.7': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' - } - 'Microsoft.NETCore.App': { - '3.1.32': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '5.0.17': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '6.0.12': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '6.0.14': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '6.0.15': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '6.0.16': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '6.0.18': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '6.0.20': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '7.0.3': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '7.0.5': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - '7.0.7': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' - } - 'Microsoft.WindowsDesktop.App': { - '3.1.32': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '5.0.17': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '6.0.14': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '6.0.16': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '6.0.18': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '7.0.3': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '7.0.5': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - '7.0.7': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' - } - } - TargetingPacks: { - 'Microsoft.NETCore.App.Ref': { - '5.0.0': { - Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/' - Analyzer: [ - - ] - Managed: [ - - ] + var expected = """ + SDKs: [ + { + Name: 'CustomSDK' + SourceDirectories: [ + 'C:/SomeWhere/' + ] + Properties: { + ToolsRoot: 'C:/SomeWhere/' } - '6.0.7': { - Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.7/' - Analyzer: [ - - ] - Managed: [ - - ] + } + { + Name: 'DotNet' + SourceDirectories: [ + 'C:/Program Files/dotnet/' + ] + Properties: { + DotNetExecutable: 'C:/Program Files/dotnet/dotnet.exe' + SDKs: { + '5.0.0': 'C:/Program Files/dotnet/sdk/5.0.0/' + '6.0.8': 'C:/Program Files/dotnet/sdk/6.0.8/' + '7.0.201': 'C:/Program Files/dotnet/sdk/7.0.201/' + '7.0.300-preview.23179.2': 'C:/Program Files/dotnet/sdk/7.0.300-preview.23179.2/' + '7.0.304': 'C:/Program Files/dotnet/sdk/7.0.304/' + '7.0.400-preview.23274.1': 'C:/Program Files/dotnet/sdk/7.0.400-preview.23274.1/' + } + Runtimes: { + 'Microsoft.AspNetCore.App': { + '3.1.32': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '5.0.17': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '6.0.14': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '6.0.16': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '6.0.18': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '7.0.3': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '7.0.5': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + '7.0.7': 'C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/' + } + 'Microsoft.NETCore.App': { + '3.1.32': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '5.0.17': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '6.0.12': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '6.0.14': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '6.0.15': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '6.0.16': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '6.0.18': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '6.0.20': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '7.0.3': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '7.0.5': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + '7.0.7': 'C:/Program Files/dotnet/shared/Microsoft.NETCore.App/' + } + 'Microsoft.WindowsDesktop.App': { + '3.1.32': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '5.0.17': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '6.0.14': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '6.0.16': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '6.0.18': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '7.0.3': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '7.0.5': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + '7.0.7': 'C:/Program Files/dotnet/shared/Microsoft.WindowsDesktop.App/' + } + } + TargetingPacks: { + 'Microsoft.NETCore.App.Ref': { + '5.0.17': { + Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.17/' + Analyzer: [ + + ] + Managed: [ + + ] + } + '6.0.14': { + Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.14/' + Analyzer: [ + + ] + Managed: [ + + ] + } + '6.0.16': { + Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.16/' + Analyzer: [ + + ] + Managed: [ + + ] + } + '6.0.18': { + Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.18/' + Analyzer: [ + + ] + Managed: [ + + ] + } + '7.0.7': { + Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/' + Analyzer: [ + + ] + Managed: [ + + ] + } + } + } } - '6.0.8': { - Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.8/' - Analyzer: [ - - ] - Managed: [ - - ] + } + { + Name: 'MSVC' + SourceDirectories: [ + 'C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.33.31629/' + ] + Properties: { + Version: '14.33.31629' + VCToolsRoot: 'C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.33.31629/' } - '6.0.9': { - Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/6.0.9/' - Analyzer: [ - - ] - Managed: [ - - ] + } + { + Name: 'Windows' + SourceDirectories: [ + 'C:/Program Files (x86)/Windows Kits/10/' + ] + Properties: { + Version: '10.0.19041.0' + RootPath: 'C:/Program Files (x86)/Windows Kits/10/' } - '7.0.7': { - Path: 'C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.7/' - Analyzer: [ - - ] - Managed: [ - - ] + } + { + Name: 'NetFXTools' + SourceDirectories: [ + 'C:/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools/' + ] + Properties: { + ToolsRoot: 'C:/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools/' } } - } - } - } - { - Name: 'MSVC' - SourceDirectories: [ - 'C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.33.31629/' - ] - Properties: { - Version: '14.33.31629' - VCToolsRoot: 'C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.33.31629/' - } - } - { - Name: 'Windows' - SourceDirectories: [ - 'C:/Program Files (x86)/Windows Kits/10/' - ] - Properties: { - Version: '10.0.19041.0' - RootPath: 'C:/Program Files (x86)/Windows Kits/10/' - } - } - { - Name: 'NetFXTools' - SourceDirectories: [ - 'C:/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools/' - ] - Properties: { - ToolsRoot: 'C:/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools/' - } - } -] -"; + ] + + """; Assert.Equal(expected, localUserConfigContent); } diff --git a/Source/GenerateSharp/Swhere.Core/Recipe.sml b/Source/GenerateSharp/Swhere.Core/Recipe.sml deleted file mode 100644 index ed52e6a7..00000000 --- a/Source/GenerateSharp/Swhere.Core/Recipe.sml +++ /dev/null @@ -1,28 +0,0 @@ -Name: 'Swhere.Core' -Language: 'C#|0' -Version: 1.0.0 -Source: [ - 'DotNet/DotNetSDKUtilities.cs' - 'Nuget/NugetPackage.cs' - 'Nuget/NugetPackageDependency.cs' - 'Nuget/NugetPackageTargetFramework.cs' - 'Nuget/NugetPackageVersion.cs' - 'Nuget/NugetSDKUtilities.cs' - 'Nuget/NuspecDependency.cs' - 'Nuget/NuspecDependencyBase.cs' - 'Nuget/NuspecDependencyGroup.cs' - 'Nuget/NuspecMetadata.cs' - 'Nuget/NuspecPackage.cs' - 'ExecutableUtilities.cs' - 'SwhereManager.cs' - 'VSWhereUtilities.cs' - 'WhereIsUtilities.cs' - 'WindowsSDKUtilities.cs' -] - -Dependencies: { - Runtime: [ - '../Utilities/' - '../Opal/' - ] -} diff --git a/Source/GenerateSharp/Swhere/DotNet/DotNetSDKUtilities.cs b/Source/GenerateSharp/Swhere/DotNet/DotNetSDKUtilities.cs index 5f87f497..3394c263 100644 --- a/Source/GenerateSharp/Swhere/DotNet/DotNetSDKUtilities.cs +++ b/Source/GenerateSharp/Swhere/DotNet/DotNetSDKUtilities.cs @@ -24,43 +24,36 @@ public static class DotNetSDKUtilities { var dotnetExecutablePath = await WhereIsUtilities.FindExecutableAsync(platform, "dotnet"); Log.HighPriority($"Using DotNet: {dotnetExecutablePath}"); - Path dotnetInstallPath; - string newline; - switch (platform) + Path dotnetInstallPath = dotnetExecutablePath.GetParent(); + string newline = platform switch { - case OSPlatform.Windows: - dotnetInstallPath = new Path("C:/Program Files/dotnet/"); - newline = "\r\n"; - break; - case OSPlatform.Linux: - dotnetInstallPath = new Path("/usr/lib/dotnet/"); - newline = "\n"; - break; - default: - throw new InvalidOperationException("Unsupported operating system"); + OSPlatform.Windows => "\r\n", + OSPlatform.Linux => "\n", + _ => throw new InvalidOperationException("Unsupported operating system"), }; // Grant access to the install folder - var sourceDirectories = new List() + var sourceDirectories = new HashSet() { dotnetInstallPath, }; - var dotnetSDKs = await FindDotNetSDKVersionsAsync(dotnetExecutablePath, newline); - var dotnetRuntimes = await FindDotNetRuntimeVersionsAsync(dotnetExecutablePath, newline); - var dotnetTargetingPacks = FindDotNetTargetingPacksVersions(dotnetInstallPath); + var dotnetSDKs = await FindDotNetSDKVersionsAsync(sourceDirectories, dotnetExecutablePath, newline); + var dotnetRuntimes = await FindDotNetRuntimeVersionsAsync(sourceDirectories, dotnetExecutablePath, newline); + var dotnetTargetingPacks = FindDotNetTargetingPacksVersions(sourceDirectories, dotnetRuntimes); - return (dotnetExecutablePath, dotnetSDKs, dotnetRuntimes, dotnetTargetingPacks, sourceDirectories); + return (dotnetExecutablePath, dotnetSDKs, dotnetRuntimes, dotnetTargetingPacks, sourceDirectories.ToList()); } private static async Task> FindDotNetSDKVersionsAsync( + HashSet sourceDirectories, Path dotnetExecutablePath, string newline) { // Check the default tools version Log.HighPriority("Find DotNet SDK Versions"); var sdksOutput = await ExecutableUtilities.RunExecutableAsync( - dotnetExecutablePath, + dotnetExecutablePath.ToString(), ["--list-sdks"]); var sdks = new List<(string, Path)>(); foreach (var sdkValue in sdksOutput.Split(newline).SkipLast(1)) @@ -74,23 +67,28 @@ public static class DotNetSDKUtilities var version = sdkValue[..splitIndex]; var installationValue = sdkValue.Substring(splitIndex + 2, sdkValue.Length - splitIndex - 3); - var installationPath = Path.Parse($"{installationValue}\\{version}\\"); + var installationPath = Path.Parse(installationValue); + var installationVersionPath = installationPath + new Path($"./{version}/"); - Log.Info($"Found SDK: {version} {installationPath}"); - sdks.Add((version, installationPath)); + // Ensure we have read access to the sdk + SourceSetUtilities.Add(sourceDirectories, installationPath); + + Log.Info($"Found SDK: {version} {installationVersionPath}"); + sdks.Add((version, installationVersionPath)); } return sdks; } private static async Task>> FindDotNetRuntimeVersionsAsync( + HashSet sourceDirectories, Path dotnetExecutablePath, string newline) { // Check the default tools version Log.HighPriority("Find DotNet Runtime Versions"); var runtimesOutput = await ExecutableUtilities.RunExecutableAsync( - dotnetExecutablePath, + dotnetExecutablePath.ToString(), ["--list-runtimes"]); var runtimes = new Dictionary>(); foreach (var runtimeValue in runtimesOutput.Split(newline).SkipLast(1)) @@ -106,7 +104,10 @@ public static class DotNetSDKUtilities var name = runtimeValue[..split1Index]; var version = runtimeValue.Substring(split1Index + 1, split2Index - split1Index - 1); var installationValue = runtimeValue.Substring(split2Index + 2, runtimeValue.Length - split2Index - 3); - var installationPath = Path.Parse($"{installationValue}\\"); + var installationPath = Path.Parse($"{installationValue}/"); + + // Ensure we have read access to the runtime + SourceSetUtilities.Add(sourceDirectories, installationPath); Log.Info($"Found Runtime: {name} {version} {installationPath}"); @@ -124,50 +125,54 @@ public static class DotNetSDKUtilities } private static Dictionary> FindDotNetTargetingPacksVersions( - Path dotnetInstallPath) + HashSet sourceDirectories, + IDictionary> dotnetRuntimes) { - var knownPacks = new List() - { - "Microsoft.NETCore.App.Ref", - }; - var result = new Dictionary>(); - foreach (var packageName in knownPacks) + foreach (var (runtime, versions) in dotnetRuntimes) { - var packageVersions = FindDotNetTargetingPackVersions(dotnetInstallPath, packageName); - result.Add(packageName, packageVersions); + var packName = $"{runtime}.Ref"; + var packageVersions = FindDotNetTargetingPackVersions(sourceDirectories, packName, versions); + if (packageVersions.Count > 0) + { + result.Add(packName, packageVersions); + } } return result; } private static List<(string Version, Path InstallDirectory, FrameworkFileList? FrameworkList)> FindDotNetTargetingPackVersions( - Path dotnetInstallPath, - string packageName) + HashSet sourceDirectories, + string packName, + IList<(string Version, Path InstallDirectory)> runtimeVersions) { - var dotnetPacksPath = dotnetInstallPath + new Path($"./packs/{packageName}/"); - - // Check the default tools version - Log.HighPriority("FindDotNetPackVersions: " + dotnetPacksPath.ToString()); var versions = new List<(string Version, Path InstallDirectory, FrameworkFileList? FrameworkList)>(); - if (LifetimeManager.Get().Exists(dotnetPacksPath)) + foreach (var (version, installDirectory) in runtimeVersions) { - foreach (var child in LifetimeManager.Get().GetChildDirectories(dotnetPacksPath)) + var rootDirectory = installDirectory.GetParent().GetParent(); + var packPath = rootDirectory + new Path($"./packs/"); + var packVersionPath = packPath + new Path($"./{packName}/{version}/"); + + // Check the default tools version + Log.HighPriority("FindDotNetPack: " + packVersionPath.ToString()); + if (LifetimeManager.Get().Exists(packVersionPath)) { - var folderName = child.Path.DecomposeDirectories().Last(); - var frameworkList = LoadFrameworkList(child.Path); - versions.Add((folderName, child.Path, frameworkList)); + // Ensure we have read access to the pack + SourceSetUtilities.Add(sourceDirectories, packPath); + + var frameworkList = LoadFrameworkList(packVersionPath); + versions.Add((version, packVersionPath, frameworkList)); + } + else + { + Log.Warning("Directory does not exist"); } - } - else - { - Log.Warning("Directory does not exist"); } return versions; } - private static FrameworkFileList? LoadFrameworkList( Path dotnetPackPath) { diff --git a/Source/GenerateSharp/Swhere/ExecutableUtilities.cs b/Source/GenerateSharp/Swhere/ExecutableUtilities.cs index 4ad24045..b9c3cb4f 100644 --- a/Source/GenerateSharp/Swhere/ExecutableUtilities.cs +++ b/Source/GenerateSharp/Swhere/ExecutableUtilities.cs @@ -13,7 +13,7 @@ namespace Soup.Build.Discover; public static class ExecutableUtilities { - public static async Task RunExecutableAsync(Path executable, IList arguments) + public static async Task RunExecutableAsync(string executable, IList arguments) { var workingDirectory = new Path("./"); diff --git a/Source/GenerateSharp/Swhere/Nuget/NugetSDKUtilities.cs b/Source/GenerateSharp/Swhere/Nuget/NugetSDKUtilities.cs index 0d8323c5..360c6f96 100644 --- a/Source/GenerateSharp/Swhere/Nuget/NugetSDKUtilities.cs +++ b/Source/GenerateSharp/Swhere/Nuget/NugetSDKUtilities.cs @@ -120,7 +120,7 @@ private static (NugetPackage?, NugetPackageVersion?) LoadNugetPackage( { if (nuspecDocument is null) { - Log.Warning($"Cannot parse depedencies not in groupd yet: {nuspecFile}"); + Log.Warning($"Cannot parse dependencies not in grouped yet: {nuspecFile}"); return (null, null); } } diff --git a/Source/GenerateSharp/Swhere/PackageLock.sml b/Source/GenerateSharp/Swhere/PackageLock.sml index 061b999f..108af672 100644 --- a/Source/GenerateSharp/Swhere/PackageLock.sml +++ b/Source/GenerateSharp/Swhere/PackageLock.sml @@ -16,7 +16,7 @@ Closures: { Build1: { Wren: { 'Soup|CSharp': { Version: 0.15.1 } - 'Soup|CSharp.Nuget': { Version: 0.5.0 } + 'Soup|CSharp.Nuget': { Version: 0.5.2 } } } Tool0: { diff --git a/Source/GenerateSharp/Swhere/SourceSetUtilities.cs b/Source/GenerateSharp/Swhere/SourceSetUtilities.cs new file mode 100644 index 00000000..39599c22 --- /dev/null +++ b/Source/GenerateSharp/Swhere/SourceSetUtilities.cs @@ -0,0 +1,40 @@ +// +// Copyright (c) Soup. All rights reserved. +// + +using System.Collections.Generic; +using Path = Opal.Path; + +namespace Soup.Build.Discover; + +public static class SourceSetUtilities +{ + /// + /// Add a new source path and cleanup sub folders + /// + public static void Add(HashSet sourceSet, Path value) + { + bool isIncluded = false; + var current = value; + while (true) + { + if (sourceSet.Contains(current)) + { + isIncluded = true; + break; + } + + var next = current.GetParent(); + if (current == next) + break; + + current = next; + } + + if (!isIncluded) + { + // TODO: Remove already added values that this folder contains + _ = sourceSet.Add(value); + } + } +} \ No newline at end of file diff --git a/Source/GenerateSharp/Swhere/Swhere.csproj b/Source/GenerateSharp/Swhere/Swhere.csproj index 99493900..099b6d7c 100644 --- a/Source/GenerateSharp/Swhere/Swhere.csproj +++ b/Source/GenerateSharp/Swhere/Swhere.csproj @@ -1,12 +1,11 @@  Exe - net8.0 + net9.0 true true false true - AnyCPU;x64 diff --git a/Source/GenerateSharp/Swhere/SwhereManager.cs b/Source/GenerateSharp/Swhere/SwhereManager.cs index 61a8e9cc..b61e7651 100644 --- a/Source/GenerateSharp/Swhere/SwhereManager.cs +++ b/Source/GenerateSharp/Swhere/SwhereManager.cs @@ -45,6 +45,102 @@ public static async Task DiscoverAsync(OSPlatform platform, bool includePrerelea private static async Task DiscoverSharedPlatformAsync(OSPlatform platform, LocalUserConfig userConfig) { + await DiscoverDotNetAsync(platform, userConfig); + DiscoverNuget(userConfig); + } + + private static async Task DiscoverWindowsPlatformAsync(bool includePrerelease, LocalUserConfig userConfig) + { + Log.HighPriority("Discover Windows Platform"); + + var (msvcVersion, msvcInstallPath) = await VSWhereUtilities.FindMSVCInstallAsync(includePrerelease); + var msvcSDK = userConfig.EnsureSDK("MSVC"); + msvcSDK.SourceDirectories = + [ + msvcInstallPath, + ]; + msvcSDK.SetProperties( + new Dictionary() + { + { "Version", msvcVersion }, + { "VCToolsRoot", msvcInstallPath.ToString() }, + }); + + var (windowsSDKVersion, windowsSDKInstallPath) = WindowsSDKUtilities.FindWindows10Kit(); + var windowsSDK = userConfig.EnsureSDK("Windows"); + windowsSDK.SourceDirectories = + [ + windowsSDKInstallPath, + ]; + windowsSDK.SetProperties( + new Dictionary() + { + { "Version", windowsSDKVersion }, + { "RootPath", windowsSDKInstallPath.ToString() }, + }); + + var netFXToolsPath = WindowsSDKUtilities.FindNetFXTools(); + var netFXToolsSDK = userConfig.EnsureSDK("NetFXTools"); + netFXToolsSDK.SourceDirectories = + [ + netFXToolsPath, + ]; + netFXToolsSDK.SetProperties( + new Dictionary() + { + { "ToolsRoot", netFXToolsPath.ToString() }, + }); + } + + private static async Task DiscoverLinuxPlatformAsync(OSPlatform platform, LocalUserConfig userConfig) + { + await DiscoverGCCAsync(platform, userConfig); + await DiscoverClangAsync(platform, userConfig); + } + + private static async Task DiscoverGCCAsync(OSPlatform platform, LocalUserConfig userConfig) + { + Log.HighPriority("Discover GCC"); + + // Find the GCC SDKs + var cCompilerPath = await WhereIsUtilities.FindExecutableAsync(platform, "gcc"); + var cppCompilerPath = await WhereIsUtilities.FindExecutableAsync(platform, "g++"); + + var gccSDK = userConfig.EnsureSDK("GCC"); + gccSDK.SourceDirectories = []; + gccSDK.SetProperties( + new Dictionary() + { + { "CCompiler", cCompilerPath.ToString() }, + { "CppCompiler", cppCompilerPath.ToString() }, + }); + } + + private static async Task DiscoverClangAsync(OSPlatform platform, LocalUserConfig userConfig) + { + Log.HighPriority("Discover Clang"); + + // Find the Clang SDKs + var cCompilerPath = await WhereIsUtilities.FindExecutableAsync(platform, "clang"); + var cppCompilerPath = await WhereIsUtilities.FindExecutableAsync(platform, "clang++"); + var archiverPath = await WhereIsUtilities.FindExecutableAsync(platform, "ar"); + + var clangSDK = userConfig.EnsureSDK("Clang"); + clangSDK.SourceDirectories = []; + clangSDK.SetProperties( + new Dictionary() + { + { "CCompiler", cCompilerPath.ToString() }, + { "CppCompiler", cppCompilerPath.ToString() }, + { "Archiver", archiverPath.ToString() }, + }); + } + + + private static async Task DiscoverDotNetAsync(OSPlatform platform, LocalUserConfig userConfig) + { + Log.HighPriority("Discover DotNet"); + var (dotNetExecutable, dotnetSDKs, dotnetRuntimes, dotnetTargetingPacks, sourceDirectories) = await DotNetSDKUtilities.FindDotNetAsync(platform); var dotnetSDK = userConfig.EnsureSDK("DotNet"); @@ -103,54 +199,18 @@ private static async Task DiscoverSharedPlatformAsync(OSPlatform platform, Local } } - private static async Task DiscoverWindowsPlatformAsync(bool includePrerelease, LocalUserConfig userConfig) + private static void DiscoverNuget(LocalUserConfig userConfig) { - var (msvcVersion, msvcInstallPath) = await VSWhereUtilities.FindMSVCInstallAsync(includePrerelease); - var msvcSDK = userConfig.EnsureSDK("MSVC"); - msvcSDK.SourceDirectories = - [ - msvcInstallPath, - ]; - msvcSDK.SetProperties( - new Dictionary() - { - { "Version", msvcVersion }, - { "VCToolsRoot", msvcInstallPath.ToString() }, - }); - - var (windowsSDKVersion, windowsSDKInstallPath) = WindowsSDKUtilities.FindWindows10Kit(); - var windowsSDK = userConfig.EnsureSDK("Windows"); - windowsSDK.SourceDirectories = - [ - windowsSDKInstallPath, - ]; - windowsSDK.SetProperties( - new Dictionary() - { - { "Version", windowsSDKVersion }, - { "RootPath", windowsSDKInstallPath.ToString() }, - }); - - var netFXToolsPath = WindowsSDKUtilities.FindNetFXTools(); - var netFXToolsSDK = userConfig.EnsureSDK("NetFXTools"); - netFXToolsSDK.SourceDirectories = - [ - netFXToolsPath, - ]; - netFXToolsSDK.SetProperties( - new Dictionary() - { - { "ToolsRoot", netFXToolsPath.ToString() }, - }); + Log.HighPriority("Discover Nuget"); var (hasNuget, nugetPackagesPath, nugetPackages) = NugetSDKUtilities.FindNugetPackages(); if (hasNuget) { var nugetSDK = userConfig.EnsureSDK("Nuget"); nugetSDK.SourceDirectories = - [ - nugetPackagesPath, - ]; + [ + nugetPackagesPath, + ]; nugetSDK.SetProperties( new Dictionary() @@ -198,44 +258,4 @@ private static async Task DiscoverWindowsPlatformAsync(bool includePrerelease, L } } } - - private static async Task DiscoverLinuxPlatformAsync(OSPlatform platform, LocalUserConfig userConfig) - { - await DiscoverGCCAsync(platform, userConfig); - await DiscoverClangAsync(platform, userConfig); - } - - private static async Task DiscoverGCCAsync(OSPlatform platform, LocalUserConfig userConfig) - { - // Find the GCC SDKs - var cCompilerPath = await WhereIsUtilities.FindExecutableAsync(platform, "gcc"); - var cppCompilerPath = await WhereIsUtilities.FindExecutableAsync(platform, "g++"); - - var gccSDK = userConfig.EnsureSDK("GCC"); - gccSDK.SourceDirectories = []; - gccSDK.SetProperties( - new Dictionary() - { - { "CCompiler", cCompilerPath.ToString() }, - { "CppCompiler", cppCompilerPath.ToString() }, - }); - } - - private static async Task DiscoverClangAsync(OSPlatform platform, LocalUserConfig userConfig) - { - // Find the GCC SDKs - var cCompilerPath = await WhereIsUtilities.FindExecutableAsync(platform, "clang"); - var cppCompilerPath = await WhereIsUtilities.FindExecutableAsync(platform, "clang++"); - var archiverPath = await WhereIsUtilities.FindExecutableAsync(platform, "ar"); - - var clangSDK = userConfig.EnsureSDK("Clang"); - clangSDK.SourceDirectories = []; - clangSDK.SetProperties( - new Dictionary() - { - { "CCompiler", cCompilerPath.ToString() }, - { "CppCompiler", cppCompilerPath.ToString() }, - { "Archiver", archiverPath.ToString() }, - }); - } } \ No newline at end of file diff --git a/Source/GenerateSharp/Swhere/VSWhereUtilities.cs b/Source/GenerateSharp/Swhere/VSWhereUtilities.cs index b638c839..3ff308de 100644 --- a/Source/GenerateSharp/Swhere/VSWhereUtilities.cs +++ b/Source/GenerateSharp/Swhere/VSWhereUtilities.cs @@ -67,7 +67,7 @@ private static async Task FindVSInstallRootAsync(string requires, bool inc } var process = LifetimeManager.Get().CreateProcess( - executablePath, + executablePath.ToString(), arguments, workingDirectory); process.Start(); diff --git a/Source/GenerateSharp/Swhere/WhereIsUtilities.cs b/Source/GenerateSharp/Swhere/WhereIsUtilities.cs index 648b0f3a..b8bfd837 100644 --- a/Source/GenerateSharp/Swhere/WhereIsUtilities.cs +++ b/Source/GenerateSharp/Swhere/WhereIsUtilities.cs @@ -15,24 +15,24 @@ public static class WhereIsUtilities { public static async Task FindExecutableAsync(OSPlatform platform, string name) { - Path executablePath; + string executable; string separator; int skipCount; int newLineLength; switch (platform) { case OSPlatform.Windows: - executablePath = new Path("C:/Windows/System32/where.exe"); + executable = "C:/Windows/System32/where.exe"; separator = "\r\n"; skipCount = 0; newLineLength = 2; break; case OSPlatform.Linux: - executablePath = new Path("/usr/bin/whereis"); + executable = "which"; separator = " "; - // Whereis sets the name as the first entry - skipCount = 1; + // which sets the name as the first entry + skipCount = 0; newLineLength = 1; break; default: @@ -44,7 +44,7 @@ public static async Task FindExecutableAsync(OSPlatform platform, string n name, }; - var stdOut = await ExecutableUtilities.RunExecutableAsync(executablePath, arguments); + var stdOut = await ExecutableUtilities.RunExecutableAsync(executable, arguments); // The first line is the path var values = stdOut[..^newLineLength] diff --git a/Source/GenerateSharp/Utilities.UnitTests/Soup.Utilities.UnitTests.csproj b/Source/GenerateSharp/Utilities.UnitTests/Soup.Utilities.UnitTests.csproj index c176ab4a..b481e509 100644 --- a/Source/GenerateSharp/Utilities.UnitTests/Soup.Utilities.UnitTests.csproj +++ b/Source/GenerateSharp/Utilities.UnitTests/Soup.Utilities.UnitTests.csproj @@ -1,13 +1,12 @@  - net8.0 + net9.0 false - AnyCPU;x64 - - - + + + runtime; build; native; contentfiles; analyzers; buildtransitive all @@ -19,4 +18,4 @@ - + \ No newline at end of file diff --git a/Source/GenerateSharp/Utilities/Recipe.sml b/Source/GenerateSharp/Utilities/Recipe.sml index 9f75413a..d7765d9e 100644 --- a/Source/GenerateSharp/Utilities/Recipe.sml +++ b/Source/GenerateSharp/Utilities/Recipe.sml @@ -1,7 +1,7 @@ Name: 'Soup.Utilities' Language: 'C#|0' Version: 1.0.0 -TargetFramework: 'net8.0' +TargetFramework: 'net9.0' Dependencies: { Build: [ 'Soup|CSharp.Nuget@0' diff --git a/Source/GenerateSharp/Utilities/Recipe/Recipe.cs b/Source/GenerateSharp/Utilities/Recipe/Recipe.cs index db958138..d5337848 100644 --- a/Source/GenerateSharp/Utilities/Recipe/Recipe.cs +++ b/Source/GenerateSharp/Utilities/Recipe/Recipe.cs @@ -44,7 +44,7 @@ public Recipe( { this.Document = new SMLDocument(); this.Name = name; - this.Language = language; + this.Document.EnsureValueWithSyntax(Property_Language, language.ToString()); // Force old way until we decide for sure this is better } /// diff --git a/Source/GenerateSharp/Utilities/Soup.Utilities.csproj b/Source/GenerateSharp/Utilities/Soup.Utilities.csproj index 5a90a9cd..bae7cb02 100644 --- a/Source/GenerateSharp/Utilities/Soup.Utilities.csproj +++ b/Source/GenerateSharp/Utilities/Soup.Utilities.csproj @@ -1,7 +1,6 @@  - net8.0 - AnyCPU;x64 + net9.0 1701;1702;3021 diff --git a/Source/Monitor/Host/Linux/LinuxMonitorProcess.h b/Source/Monitor/Host/Linux/LinuxMonitorProcess.h index 874fdb34..be508eee 100644 --- a/Source/Monitor/Host/Linux/LinuxMonitorProcess.h +++ b/Source/Monitor/Host/Linux/LinuxMonitorProcess.h @@ -83,12 +83,12 @@ namespace Monitor::Linux // Create a pipe to send stdout to parent int stdOutPipe[2]; - if (pipe(stdOutPipe) < 0) + if (pipe2(stdOutPipe, O_NONBLOCK) < 0) throw std::runtime_error("Failed to create stdOutPipe"); // Create a pipe to send stderr to parent int stdErrPipe[2]; - if (pipe(stdErrPipe) < 0) + if (pipe2(stdErrPipe, O_NONBLOCK) < 0) throw std::runtime_error("Failed to create stdErrPipe"); // Create a child process @@ -137,43 +137,12 @@ namespace Monitor::Linux m_processRunning = false; - // Read all and write to stdout - // TODO: May want to switch over to a background thread with peak to read in order - int dwRead; - const int BufferSize = 256; - char buffer[BufferSize + 1]; - - // Read on output - while (true) - { - dwRead = read(m_stdOutReadHandle, buffer, BufferSize); - if(dwRead < 0) - break; - if (dwRead == 0) - break; - - m_stdOut << std::string_view(buffer, dwRead); - } - + ReadAvailableStdOut(); m_stdOut << std::flush; - close(m_stdOutReadHandle); - // Read all errors - while (true) - { - dwRead = read(m_stdErrReadHandle, buffer, BufferSize); - if(dwRead < 0) - break; - if (dwRead == 0) - break; - - // Make the string null terminated - m_stdErr << std::string_view(buffer, dwRead); - } - + ReadAvailableStdErr(); m_stdErr << std::flush; - close(m_stdErrReadHandle); m_isFinished = true; @@ -215,6 +184,47 @@ namespace Monitor::Linux } private: + void ReadAvailableStdOut() + { + // Read all and write to stdout + int dwRead; + const int BufferSize = 256; + char buffer[BufferSize + 1]; + + // Read on output + while (true) + { + dwRead = read(m_stdOutReadHandle, buffer, BufferSize); + if(dwRead < 0) + break; + if (dwRead == 0) + break; + + m_stdOut << std::string_view(buffer, dwRead); + } + } + + void ReadAvailableStdErr() + { + // Read all and write to stdout + int dwRead; + const int BufferSize = 256; + char buffer[BufferSize + 1]; + + // Read all errors + while (true) + { + dwRead = read(m_stdErrReadHandle, buffer, BufferSize); + if(dwRead < 0) + break; + if (dwRead == 0) + break; + + // Make the string null terminated + m_stdErr << std::string_view(buffer, dwRead); + } + } + void SetupChildProcess(int stdOutPipe[2], int stdErrPipe[2]) { try @@ -418,8 +428,11 @@ namespace Monitor::Linux if (ptrace(PTRACE_CONT, m_processId, NULL, NULL) < 0) throw std::runtime_error(std::format("ptrace PTRACE_CONT failed {0}", errno)); + int eventCount = 0; while (true) { + eventCount++; + DebugTrace("Waiting..."); currentProcessId = waitpid(-1, &status, __WALL); int wait_errno = errno; @@ -427,7 +440,7 @@ namespace Monitor::Linux DebugTrace("Status:", status); if (currentProcessId == -1) - throw std::runtime_error("Wait failed"); + throw std::runtime_error(std::format("Wait failed {0}", wait_errno)); bool continueSysCall = false; bool exited = WIFEXITED(status); @@ -445,7 +458,7 @@ namespace Monitor::Linux } else { - DebugTrace("Child exit: ", currentProcessId); + DebugTrace("Child exit:", currentProcessId); } } else if (WIFSTOPPED(status)) @@ -477,6 +490,7 @@ namespace Monitor::Linux { auto event = (unsigned int)status >> 16; DebugTrace("Event:", event); + switch (event) { case PTRACE_EVENT_SECCOMP: @@ -504,13 +518,31 @@ namespace Monitor::Linux case PTRACE_EVENT_FORK: { DebugTrace("PTRACE_EVENT_FORK"); + auto& currentProcess = FindProcess(activeProcesses, currentProcessId); + if (currentProcess.InSystemCall) + { + currentProcess.InSystemCall = false; + } + else + { + throw std::runtime_error("Clone expected to be in a system call"); + } break; } case PTRACE_EVENT_VFORK: { DebugTrace("PTRACE_EVENT_VFORK"); - + auto& currentProcess = FindProcess(activeProcesses, currentProcessId); + if (currentProcess.InSystemCall) + { + currentProcess.InSystemCall = false; + } + else + { + throw std::runtime_error("Clone expected to be in a system call"); + } + break; } case PTRACE_EVENT_CLONE: @@ -552,33 +584,53 @@ namespace Monitor::Linux case SIGSTOP: { // Trace clone - DebugTrace("TraceClone"); + DebugTrace("SIGSTOP"); InitializeProcess(activeProcesses, currentProcessId); break; } + case SIGCHLD: + { + // Child exit + DebugTrace("SIGCHLD"); + break; + } default: { - DebugTrace("Unknown Signal"); + Log::Warning("WARNING: Unknown Signal"); + break; } } } else { - DebugTrace("WARNING: Unknown Status"); + Log::Warning("WARNING: Unknown Status"); + break; } if (!exited) { if (continueSysCall) { + DebugTrace("PTRACE_SYSCALL"); if (ptrace(PTRACE_SYSCALL, currentProcessId, 0, 0) < 0) throw std::runtime_error(std::format("ptrace PTRACE_SYSCALL failed {0}", errno)); } else { + DebugTrace("PTRACE_CONT"); if (ptrace(PTRACE_CONT, currentProcessId, 0, 0) < 0) throw std::runtime_error(std::format("ptrace PTRACE_CONT failed {0}", errno)); } + + if (eventCount > 100) + { + // Read std out so the child does not fill the buffer + // TODO: Move to background thread so we do not block the child + ReadAvailableStdOut(); + ReadAvailableStdErr(); + + eventCount = 0; + } } } } diff --git a/Source/Monitor/Host/Linux/LinuxTraceEventListener.h b/Source/Monitor/Host/Linux/LinuxTraceEventListener.h index 95def966..894965b8 100644 --- a/Source/Monitor/Host/Linux/LinuxTraceEventListener.h +++ b/Source/Monitor/Host/Linux/LinuxTraceEventListener.h @@ -186,11 +186,9 @@ namespace Monitor::Linux m_monitor->OnVFork(result); break; } - - // Uknown default: { - throw std::runtime_error("Unknown system call type"); + throw std::runtime_error(std::format("Unknown system call type {0}", registers.Command)); } } } diff --git a/global.json b/global.json index 4e0cd99f..3cc551b8 100644 --- a/global.json +++ b/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "6.0.*" + "version": "9.0.*" } } \ No newline at end of file