From 77379265c2e2151df3e520d0941a5c022300c321 Mon Sep 17 00:00:00 2001 From: TekH Date: Thu, 2 Jul 2026 15:53:49 +0200 Subject: [PATCH] Add dotnet-tools.json and publish script for .NET 8 Added a `dotnet-tools.json` file to define a .NET tool manifest, specifying the `dotnet-ef` tool with version `10.0.9`. Introduced a `publish.bat` script for publishing the `EnvelopeGenerator.Server` project as a self-contained application targeting `win-x64` and .NET 8. The script handles cleaning, publishing, output verification, and provides deployment instructions for IIS. Updated the `EnvelopeGenerator.sln` file to include a reference to the `publish.bat` script under the `EnvelopeGenerator.Server` project using a `SolutionItems` section. --- .../dotnet-tools.json | 13 +++ EnvelopeGenerator.Server/publish.bat | 96 +++++++++++++++++++ EnvelopeGenerator.sln | 3 + 3 files changed, 112 insertions(+) create mode 100644 EnvelopeGenerator.Server/EnvelopeGenerator.Server/dotnet-tools.json create mode 100644 EnvelopeGenerator.Server/publish.bat diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/dotnet-tools.json b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/dotnet-tools.json new file mode 100644 index 00000000..807729e4 --- /dev/null +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/dotnet-tools.json @@ -0,0 +1,13 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "dotnet-ef": { + "version": "10.0.9", + "commands": [ + "dotnet-ef" + ], + "rollForward": false + } + } +} \ No newline at end of file diff --git a/EnvelopeGenerator.Server/publish.bat b/EnvelopeGenerator.Server/publish.bat new file mode 100644 index 00000000..b780f85a --- /dev/null +++ b/EnvelopeGenerator.Server/publish.bat @@ -0,0 +1,96 @@ +@echo off +setlocal + +echo ============================================================ +echo EnvelopeGenerator.Server - Self-Contained Publish +echo Target: win-x64 / .NET 8 / Release +echo ============================================================ +echo. + +REM Must be run from the solution root directory. +REM This file is located under: EnvelopeGenerator.Server\ + +set PROJECT=EnvelopeGenerator.Server\EnvelopeGenerator.Server.csproj +set OUTPUT=publish-output +set RID=win-x64 +set FRAMEWORK=net8.0 + +echo [1/3] Cleaning previous publish output... +if exist "%OUTPUT%" ( + rmdir /s /q "%OUTPUT%" + echo Removed: %OUTPUT% +) else ( + echo Nothing to clean. +) +echo. + +echo [2/3] Publishing... +echo Project : %PROJECT% +echo Output : %OUTPUT% +echo RID : %RID% +echo Framework: %FRAMEWORK% +echo. + +dotnet publish "%PROJECT%" ^ + -c Release ^ + -f %FRAMEWORK% ^ + --self-contained true ^ + --runtime %RID% ^ + -o "%OUTPUT%" + +if %ERRORLEVEL% neq 0 ( + echo. + echo [ERROR] Publish failed! ERRORLEVEL=%ERRORLEVEL% + pause + exit /b %ERRORLEVEL% +) + +echo. +echo [3/3] Verifying output... + +set PASS=1 + +if not exist "%OUTPUT%\EnvelopeGenerator.Server.exe" ( + echo [FAIL] EnvelopeGenerator.Server.exe not found! + set PASS=0 +) +if not exist "%OUTPUT%\hostfxr.dll" ( + echo [FAIL] hostfxr.dll not found! (Not a self-contained publish?) + set PASS=0 +) +if not exist "%OUTPUT%\coreclr.dll" ( + echo [FAIL] coreclr.dll not found! (Not a self-contained publish?) + set PASS=0 +) +if not exist "%OUTPUT%\Microsoft.Extensions.DependencyInjection.Abstractions.dll" ( + echo [FAIL] Microsoft.Extensions.DependencyInjection.Abstractions.dll not found! + set PASS=0 +) +if not exist "%OUTPUT%\web.config" ( + echo [FAIL] web.config not found! + set PASS=0 +) + +if "%PASS%"=="1" ( + echo. + echo ============================================================ + echo PUBLISH SUCCEEDED + echo Output folder: %~dp0%OUTPUT% + echo ============================================================ + echo. + echo Next steps: + echo 1. Copy the contents of '%OUTPUT%' to the IIS application directory + echo 2. Set the IIS Application Pool to 'No Managed Code' + echo 3. Recycle the Application Pool + echo. +) else ( + echo. + echo ============================================================ + echo PUBLISH COMPLETED BUT VERIFICATION FAILED + echo Review the FAIL messages above. + echo ============================================================ + echo. +) + +pause +endlocal diff --git a/EnvelopeGenerator.sln b/EnvelopeGenerator.sln index 5507c274..7d53a3cd 100644 --- a/EnvelopeGenerator.sln +++ b/EnvelopeGenerator.sln @@ -45,6 +45,9 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnvelopeGenerator.ReceiverUI", "EnvelopeGenerator.ReceiverUI\EnvelopeGenerator.ReceiverUI.csproj", "{FB2D306B-1042-4A70-31ED-F991A1599371}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "EnvelopeGenerator.Server", "EnvelopeGenerator.Server", "{BF1700D5-592E-4FFA-84E8-5480E289A1F0}" + ProjectSection(SolutionItems) = preProject + EnvelopeGenerator.Server\publish.bat = EnvelopeGenerator.Server\publish.bat + EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnvelopeGenerator.Server", "EnvelopeGenerator.Server\EnvelopeGenerator.Server\EnvelopeGenerator.Server.csproj", "{4E6C54DA-576D-0955-2564-9EC890BB8279}" EndProject