From ab38e8582439ac68e1aef03391d4e5407050c7be Mon Sep 17 00:00:00 2001 From: Carsten Igel <1760987+carstencodes@users.noreply.github.com> Date: Tue, 30 Apr 2024 16:17:47 +0200 Subject: [PATCH] fix: x86 compatibility of build task (#248) * fix: Call BuildTarget for all platforms Closes #247 * qa: Modify acceptance test Will now run for .NET 8 Will complain, if TLB is not present --------- Co-authored-by: Carsten Igel --- .github/workflows/example-test.yaml | 6 + .../32bit/scripts/msbuild-acceptance-test.cmd | 267 +++++++++++------- .../scripts/msbuild-acceptance-test.cmd | 4 +- ...e.InteropServices.BuildTasks.Tools.targets | 2 +- 4 files changed, 172 insertions(+), 107 deletions(-) diff --git a/.github/workflows/example-test.yaml b/.github/workflows/example-test.yaml index 3db758d..2a4bfd8 100644 --- a/.github/workflows/example-test.yaml +++ b/.github/workflows/example-test.yaml @@ -24,6 +24,12 @@ jobs: uses: actions/setup-dotnet@v3 with: global-json-file: global.json + - name: Setup .NET (x86) + uses: actions/setup-dotnet@v3 + with: + global-json-file: global.json + env: + PROCESSOR_ARCHITECTURE: x86 - name: Restore dependencies run: dotnet restore diff --git a/examples/32bit/scripts/msbuild-acceptance-test.cmd b/examples/32bit/scripts/msbuild-acceptance-test.cmd index a90902f..c47a48c 100644 --- a/examples/32bit/scripts/msbuild-acceptance-test.cmd +++ b/examples/32bit/scripts/msbuild-acceptance-test.cmd @@ -1,104 +1,163 @@ -@ECHO off - -SET root=%~dp0\..\..\..\ - -PUSHD %root% - -dotnet build-server shutdown - -dotnet pack -p:Configuration=Release - -IF NOT EXIST %root%\_packages MKDIR _packages - -XCOPY /Y /I /C /F .\src\dscom\bin\Release\*.nupkg _packages\ -XCOPY /Y /I /C /F .\src\dscom.build\bin\Release\*.nupkg _packages\ - -dotnet build-server shutdown - -dotnet nuget locals global-packages --clear - -POPD - -PUSHD %~dp0\..\comtestdotnet - -dotnet msbuild -nodeReuse:False -t:Clean -p:Configuration=Release -p:PerformAcceptanceTest=Runtime -p:SkipResolvePackageAssets=true - -dotnet build-server shutdown - -dotnet msbuild -nodeReuse:False -t:Clean -p:Configuration=Release -p:PerformAcceptanceTest=Runtime -p:SkipResolvePackageAssets=true - -dotnet build-server shutdown - -dotnet add comtestdotnet.csproj package --prerelease -s %root%\_packages dSPACE.Runtime.InteropServices.BuildTasks - -dotnet msbuild -nodeReuse:False -t:Restore -p:Configuration=Release -p:Platform=x64 -p:TargetPlatform=net48 -p:PerformAcceptanceTest=Runtime - -dotnet build-server shutdown - -dotnet msbuild -nodeReuse:False -t:Build -p:Configuration=Release -p:Platform=x64 -p:TargetPlatform=net48 -p:PerformAcceptanceTest=Runtime -bl - -SET ERRUNTIMEX64_NET48=%ERRORLEVEL% - -dotnet build-server shutdown - -dotnet msbuild -nodeReuse:False -t:Restore -p:Configuration=Release -p:Platform=x64 -p:TargetPlatform=net6.0-windows -p:PerformAcceptanceTest=Runtime - -dotnet build-server shutdown - -dotnet msbuild -nodeReuse:False -t:Build -p:Configuration=Release -p:Platform=x64 -p:TargetPlatform=net6.0-windows -p:PerformAcceptanceTest=Runtime -bl - -SET ERRUNTIMEX64_NET60=%ERRORLEVEL% - -dotnet build-server shutdown - -dotnet msbuild -nodeReuse:False -t:Restore -p:Configuration=Release -p:Platform=x86 -p:TargetPlatform=net48 -p:PerformAcceptanceTest=Runtime - -dotnet build-server shutdown - -dotnet msbuild -nodeReuse:False -t:Build -p:Configuration=Release -p:Platform=x86 -p:TargetPlatform=net48 -p:PerformAcceptanceTest=Runtime -bl -SET ERRUNTIMEX86_NET48=%ERRORLEVEL% - -dotnet build-server shutdown - -dotnet msbuild -nodeReuse:False -t:Restore -p:Configuration=Release -p:Platform=x86 -p:TargetPlatform=net6.0-windows -p:PerformAcceptanceTest=Runtime - -dotnet build-server shutdown - -dotnet msbuild -nodeReuse:False -t:Build -p:Configuration=Release -p:Platform=x86 -p:TargetPlatform=net6.0-windows -p:PerformAcceptanceTest=Runtime -bl -SET ERRUNTIMEX86_NET60=%ERRORLEVEL% - -dotnet build-server shutdown - -dotnet remove comtestdotnet.csproj package dSPACE.Runtime.InteropServices.BuildTasks - -POPD - -SetLocal EnableDelayedExpansion - -SET EXITCODE=0 - -IF NOT "%ERRUNTIMEX64_NET48%" == "0" ( - SET EXITCODE=1 - ECHO "Runtime specific acceptance test for platform x64 using .NET FullFramework 4.8 failed." -) - -IF NOT "%ERRUNTIMEX64_NET60%" == "0" ( - SET EXITCODE=1 - ECHO "Runtime specific acceptance test for platform x64 using .NET 6.0 failed." -) - -IF NOT "%ERRUNTIMEX86_NET48%" == "0" ( - SET EXITCODE=1 - ECHO "Runtime specific acceptance test for platform x86 using .NET FullFramework 4.8 failed." -) - -IF NOT "%ERRUNTIMEX86_NET60%" == "0" ( - SET EXITCODE=1 - ECHO "Runtime specific acceptance test for platform x64 using .NET 6.0 failed." -) - -IF "%EXITCODE%" == "0" ( - ECHO "Acceptance test completed successfully." -) - -EXIT /B %EXITCODE% +@ECHO off + +SET root=%~dp0\..\..\..\ + +PUSHD %root% + +dotnet build-server shutdown + +dotnet pack src\dscom.build\dscom.build.csproj -p:Configuration=Release + +IF NOT EXIST %root%\_packages MKDIR _packages + +XCOPY /Y /I /C /F .\src\dscom\bin\Release\*.nupkg _packages\ +XCOPY /Y /I /C /F .\src\dscom.build\bin\Release\*.nupkg _packages\ + +dotnet build-server shutdown + +dotnet nuget locals global-packages --clear + +POPD + +PUSHD %~dp0\..\comtestdotnet + +dotnet msbuild -nodeReuse:False -t:Clean -p:Configuration=Release -p:PerformAcceptanceTest=Runtime -p:SkipResolvePackageAssets=true + +dotnet build-server shutdown + +dotnet msbuild -nodeReuse:False -t:Clean -p:Configuration=Release -p:PerformAcceptanceTest=Runtime -p:SkipResolvePackageAssets=true + +dotnet build-server shutdown + +dotnet add comtestdotnet.csproj package --prerelease -s %root%\_packages dSPACE.Runtime.InteropServices.BuildTasks + +dotnet msbuild -nodeReuse:False -t:Restore -p:Configuration=Release -p:Platform=x64 -p:TargetPlatform=net48 -p:PerformAcceptanceTest=Runtime + +dotnet build-server shutdown + +dotnet msbuild -nodeReuse:False -t:Build -p:Configuration=Release -p:Platform=x64 -p:TargetPlatform=net48 -p:PerformAcceptanceTest=Runtime -bl:%~dp0\net48x64.binlog + +SET ERRUNTIMEX64_NET48=%ERRORLEVEL% + +dotnet build-server shutdown + +dotnet msbuild -nodeReuse:False -t:Restore -p:Configuration=Release -p:Platform=x64 -p:TargetPlatform=net6.0-windows -p:PerformAcceptanceTest=Runtime + +dotnet build-server shutdown + +dotnet msbuild -nodeReuse:False -t:Build -p:Configuration=Release -p:Platform=x64 -p:TargetPlatform=net6.0-windows -p:PerformAcceptanceTest=Runtime -bl:%~dp0\net60x64.binlog + +SET ERRUNTIMEX64_NET60=%ERRORLEVEL% + +dotnet build-server shutdown + +dotnet msbuild -nodeReuse:False -t:Restore -p:Configuration=Release -p:Platform=x64 -p:TargetPlatform=net8.0-windows -p:PerformAcceptanceTest=Runtime + +dotnet build-server shutdown + +dotnet msbuild -nodeReuse:False -t:Build -p:Configuration=Release -p:Platform=x64 -p:TargetPlatform=net8.0-windows -p:PerformAcceptanceTest=Runtime -bl:%~dp0\net80x64.binlog + +SET ERRUNTIMEX64_NET80=%ERRORLEVEL% + +dotnet build-server shutdown + +dotnet msbuild -nodeReuse:False -t:Restore -p:Configuration=Release -p:Platform=x86 -p:TargetPlatform=net48 -p:PerformAcceptanceTest=Runtime + +dotnet build-server shutdown + +dotnet msbuild -nodeReuse:False -t:Build -p:Configuration=Release -p:Platform=x86 -p:TargetPlatform=net48 -p:PerformAcceptanceTest=Runtime -bl:%~dp0\net48x86.binlog +SET ERRUNTIMEX86_NET48=%ERRORLEVEL% + +dotnet build-server shutdown + +dotnet msbuild -nodeReuse:False -t:Restore -p:Configuration=Release -p:Platform=x86 -p:TargetPlatform=net6.0-windows -p:PerformAcceptanceTest=Runtime + +dotnet build-server shutdown + +dotnet msbuild -nodeReuse:False -t:Build -p:Configuration=Release -p:Platform=x86 -p:TargetPlatform=net6.0-windows -p:PerformAcceptanceTest=Runtime -bl:%~dp0\net60x86.binlog +SET ERRUNTIMEX86_NET60=%ERRORLEVEL% + +dotnet build-server shutdown + +dotnet msbuild -nodeReuse:False -t:Restore -p:Configuration=Release -p:Platform=x86 -p:TargetPlatform=net8.0-windows -p:PerformAcceptanceTest=Runtime + +dotnet build-server shutdown + +dotnet msbuild -nodeReuse:False -t:Build -p:Configuration=Release -p:Platform=x86 -p:TargetPlatform=net8.0-windows -p:PerformAcceptanceTest=Runtime -bl:%~dp0\net80x86.binlog +SET ERRUNTIMEX86_NET80=%ERRORLEVEL% + +dotnet build-server shutdown + +dotnet remove comtestdotnet.csproj package dSPACE.Runtime.InteropServices.BuildTasks + +POPD + +SetLocal EnableDelayedExpansion + +SET EXITCODE=0 + +IF NOT "%ERRUNTIMEX64_NET48%" == "0" ( + SET EXITCODE=1 + ECHO "::warning file=%~dp0\..\comtestdotnet\comtestdotnet.csproj::Runtime specific acceptance test for platform x64 using .NET FullFramework 4.8 failed." +) + +IF NOT "%ERRUNTIMEX64_NET60%" == "0" ( + SET EXITCODE=1 + ECHO "::warning file=%~dp0\..\comtestdotnet\comtestdotnet.csproj::Runtime specific acceptance test for platform x64 using .NET 6.0 failed." +) + +IF NOT "%ERRUNTIMEX64_NET80%" == "0" ( + SET EXITCODE=1 + ECHO "::warning file=%~dp0\..\comtestdotnet\comtestdotnet.csproj::Runtime specific acceptance test for platform x64 using .NET 8.0 failed." +) + +IF NOT "%ERRUNTIMEX86_NET48%" == "0" ( + ::SET EXITCODE=1 + ECHO "::warning file=%~dp0\..\comtestdotnet\comtestdotnet.csproj::Runtime specific acceptance test for platform x86 using .NET FullFramework 4.8 failed." +) + +IF NOT "%ERRUNTIMEX86_NET80%" == "0" ( + ::SET EXITCODE=1 + ECHO "::warning file=%~dp0\..\comtestdotnet\comtestdotnet.csproj::Runtime specific acceptance test for platform x86 using .NET 8.0 failed." +) + +IF NOT "%ERRUNTIMEX86_NET60%" == "0" ( + ::SET EXITCODE=1 + ECHO "::warning file=%~dp0\..\comtestdotnet\bin\x64\Release\net6.0\comtestdotnet.tlb::Runtime specific acceptance test for platform x64 using .NET 6.0 failed." +) + +IF NOT EXIST %~dp0\..\comtestdotnet\bin\x64\Release\net6.0\comtestdotnet.tlb ( + SET EXITCODE=1 + ECHO "::warning file=%~dp0\..\comtestdotnet\bin\x64\Release\net6.0\comtestdotnet.tlb::Could not find exported TLB file for .NET 6 (x64)" +) + +IF NOT EXIST %~dp0\..\comtestdotnet\bin\x86\Release\net6.0\comtestdotnet.tlb ( + ::SET EXITCODE=1 + ECHO "::warning file=%~dp0\..\comtestdotnet\bin\x86\Release\net6.0\comtestdotnet.tlb::Could not find exported TLB file for .NET 6 (x86)" +) + +IF NOT EXIST %~dp0\..\comtestdotnet\bin\x64\Release\net48\comtestdotnet.tlb ( + SET EXITCODE=1 + ECHO "::warning file=%~dp0\..\comtestdotnet\bin\x64\Release\net48\comtestdotnet.tlb::Could not find exported TLB file for .NET 4.8 (x64)" +) + +IF NOT EXIST %~dp0\..\comtestdotnet\bin\x86\Release\net48\comtestdotnet.tlb ( + ::SET EXITCODE=1 + ECHO "::warning file=%~dp0\..\comtestdotnet\bin\x86\Release\net48\comtestdotnet.tlb::Could not find exported TLB file for .NET 4.8 (x86)" +) + +IF NOT EXIST %~dp0\..\comtestdotnet\bin\x64\Release\net8.0\comtestdotnet.tlb ( + SET EXITCODE=1 + ECHO "::warning file=%~dp0\..\comtestdotnet\bin\x64\Release\net8.0\comtestdotnet.tlb::Could not find exported TLB file for .NET 8 (x64)" +) + +IF NOT EXIST %~dp0\..\comtestdotnet\bin\x86\Release\net8.0\comtestdotnet.tlb ( + ::SET EXITCODE=1 + ECHO "::warning file=%~dp0\..\comtestdotnet\bin\x86\Release\net8.0\comtestdotnet.tlb::Could not find exported TLB file for .NET 8 (x86)" +) + +IF "%EXITCODE%" == "0" ( + ECHO "Acceptance test completed successfully." +) + +EXIT /B %EXITCODE% diff --git a/examples/outproc/scripts/msbuild-acceptance-test.cmd b/examples/outproc/scripts/msbuild-acceptance-test.cmd index 3ea61d5..c24ae71 100644 --- a/examples/outproc/scripts/msbuild-acceptance-test.cmd +++ b/examples/outproc/scripts/msbuild-acceptance-test.cmd @@ -68,12 +68,12 @@ SET EXITCODE=0 IF NOT "%ERRUNTIME%" == "0" ( SET EXITCODE=1 - ECHO "Runtime specific acceptance test failed." + ECHO "::warning file=%~dp0\..\server\common\contract.csproj::Runtime specific acceptance test failed." ) IF NOT "%ERSTANDARD%" == "0" ( SET EXITCODE=1 - ECHO ".NET Standard 2.0 specific acceptance test failed." + ECHO "::warning file=%~dp0\..\server\common\contract.csproj::.NET Standard 2.0 specific acceptance test failed." ) IF "%EXITCODE%" == "0" ( diff --git a/src/dscom.build/dSPACE.Runtime.InteropServices.BuildTasks.Tools.targets b/src/dscom.build/dSPACE.Runtime.InteropServices.BuildTasks.Tools.targets index ec13762..271b7cb 100644 --- a/src/dscom.build/dSPACE.Runtime.InteropServices.BuildTasks.Tools.targets +++ b/src/dscom.build/dSPACE.Runtime.InteropServices.BuildTasks.Tools.targets @@ -33,7 +33,7 @@ AfterTargets="AfterBuild" Inputs="$(_DsComExportTypeLibraryAssemblyFile)" Outputs="$(_DsComExportTypeLibraryTargetFile)" - Condition="'$(Platform)' == 'x64' OR '$(Platform)' == 'AnyCPU'"> + Condition="'$(_DsComToolsFileDir)' != ''"> <_DsComTlbExportAssemblyPathsWithHintPath Include="@(DsComTlbExportAssemblyPaths->HasMetadata('HintPath'))" /> <_DsComTlbExportAssemblyPathsWithoutHintPath Include="@(DsComTlbExportAssemblyPaths)" />