FROM mcr.microsoft.com/dotnet/sdk:9.0-windowsservercore-ltsc2022 AS build WORKDIR /src # Copy the repository sources COPY . ./ # Restore NuGet packages RUN dotnet restore ShareX.sln # Build the solution (Release, x64) RUN dotnet build ShareX.sln -c Release -p:Platform=x64 --no-restore /m:1 # Final runtime image FROM mcr.microsoft.com/dotnet/runtime:9.0-windowsservercore-ltsc2022 AS runtime WORKDIR /app # Copy build output from the build stage. We keep the entire source tree to keep paths simple. COPY --from=build /src /src # Provide a simple entry that confirms the container is ready and where to find built artifacts CMD ["powershell", "-NoProfile", "-Command", "Write-Host 'ShareX container ready. Binaries and sources in /src'" ]
FROM mcr.microsoft.com/dotnet/sdk:9.0-windowsservercore-ltsc2022 AS build WORKDIR /src # Copy the repository sources COPY . . # Restore NuGet packages RUN dotnet restore ShareX.sln # Build and publish the solution for Windows x64 RUN dotnet publish ShareX.sln -c Release -r win-x64 -o /src/publish # Final runtime image FROM mcr.microsoft.com/dotnet/runtime:9.0-windowsservercore-ltsc2022 AS runtime WORKDIR /app # Copy build output from the build stage COPY --from=build /src/publish ./ # Basic entrypoint (prints a message; GUI app won't run headless in a container) CMD ["powershell", "-NoProfile", "-Command", "Write-Host 'ShareX container ready. Binaries located at /app'" ]
FROM mcr.microsoft.com/windows/servercore:ltsc2022 AS build
SHELL ["powershell", "-Command"]
# Install .NET 9 SDK using the dotnet-install script (self-contained build will be performed later)
RUN Invoke-WebRequest -UseBasicParsing -Uri https://dot.net/v1/dotnet-install.ps1 -OutFile dotnet-install.ps1
RUN & .\dotnet-install.ps1 -Channel 9.0 -InstallDir C:\dotnet
ENV DOTNET_ROOT="C:\\dotnet"
ENV PATH="C:\\dotnet;${PATH}"
WORKDIR /src
# Copy the repository sources
COPY . ./
# Restore NuGet packages
RUN dotnet restore ShareX.sln
# Build and publish as self-contained for Windows-x64
RUN dotnet publish ShareX.sln -c Release -r win-x64 --self-contained true -o /src/publish
FROM mcr.microsoft.com/windows/servercore:ltsc2022 AS runtime
WORKDIR /app
# Copy published output from build stage
COPY --from=build /src/publish ./
# Keep container alive with a simple message
CMD ["powershell", "-NoProfile", "-Command", "Write-Host 'ShareX container ready. Binaries located in /app' ; while ($true) { Start-Sleep -Seconds 3600 }"]
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build WORKDIR /src # Copy the repository sources COPY . ./ # Restore NuGet packages RUN dotnet restore ShareX.sln # Build the solution (Release, x64) RUN dotnet build ShareX.sln -c Release -p:Platform=x64 --nologo # Final runtime image FROM mcr.microsoft.com/dotnet/runtime:9.0 AS runtime WORKDIR /app # Copy build output from the build stage (keep sources for debugging if needed) COPY --from=build /src /src # Default command: print a message to indicate container is ready CMD ["bash", "-lc", "echo 'ShareX container is built (Linux-based)'.; ls -la /src"]
FROM ubuntu:22.04 # Basic setup RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates curl unzip WORKDIR /src # Copy the repository sources COPY . . # Default command: list the repository contents (will not run the GUI app in Linux container) CMD ["bash", "-lc", "echo 'ShareX container (Linux base) ready. Source mounted at /src'; ls -la /src"]
# Ignore git .git .gitignore # Ignore binaries and build outputs bin obj publish # User-specific files *.user *.suo *.userosscache *.sln.docstates # OS generated files .DS_Store Thumbs.db
Concerns: No build steps for a C# desktop app: there is no dotnet SDK/runtime installation and no dotnet build commands., The image copies the source directory but never compiles or builds the application; CMD only echoes a message and lists /src, effectively acting as a placeholder., There’s no evidence of a runnable desktop GUI setup for Linux in this container; running a Windows/macOS desktop app in Linux containers typically requires additional tooling, which is not present here., COPY . . assumes source is present in the build context; while not a syntax error, there’s no validation of required project files (.csproj/.sln) before a build step.
FROM mcr.microsoft.com/dotnet/sdk:9.0-windowsservercore-ltsc2022 AS build
WORKDIR /src
# Copy the repository sources
COPY . ./
# Restore NuGet packages
RUN dotnet restore ShareX.sln
# Build the solution (Release, x64)
RUN dotnet build ShareX.sln -c Release -p:Platform=x64 --nologo
# Final runtime image
FROM mcr.microsoft.com/dotnet/runtime:9.0-windowsservercore-ltsc2022 AS runtime
WORKDIR /app
# Copy build output from the build stage
COPY --from=build /src/ShareX/bin/Release /app
# Keep container alive with a simple message
CMD ["powershell", "-NoProfile", "-Command", "Write-Host 'ShareX container ready. Binaries located in /app' ; while ($true) { Start-Sleep -Seconds 3600 }"]
FROM mcr.microsoft.com/dotnet/sdk:9.0-windowsservercore-ltsc2022 AS build WORKDIR /src # Copy the repository sources COPY . ./ # Restore NuGet packages RUN dotnet restore ShareX.sln # Build and publish the solution for Windows-x64 as self-contained RUN dotnet publish ShareX.sln -c Release -r win-x64 --self-contained true -o /app/publish # Final runtime image FROM mcr.microsoft.com/dotnet/runtime:9.0-windowsservercore-ltsc2022 AS runtime WORKDIR /app # Copy publish output from the build stage COPY --from=build /app/publish ./ # Default command: start the main ShareX executable (GUI apps may not run headless in container) CMD ["ShareX.exe"]
FROM mcr.microsoft.com/dotnet/sdk:9.0-windowsservercore-ltsc2022 AS build
WORKDIR /src
# Copy the repository sources
COPY . ./
# Restore NuGet packages
RUN dotnet restore ShareX.sln
# Build and publish the solution for Windows-x64 as self-contained
RUN dotnet publish ShareX.sln -c Release -r win-x64 --self-contained true -o /app/publish
FROM mcr.microsoft.com/dotnet/runtime:9.0-windowsservercore-ltsc2022 AS runtime
WORKDIR /app
# Copy publish output from the build stage
COPY --from=build /app/publish ./
# Default command: keep container alive and indicate location of binaries
CMD ["powershell", "-NoProfile", "-Command", "Write-Host 'ShareX container ready. Binaries located in /app' ; while ($true) { Start-Sleep -Seconds 3600 }"]
FROM ubuntu:22.04 AS build
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates curl git wget unzip xz-utils gnupg \
&& rm -rf /var/lib/apt/lists/*
# Install .NET 9 via dotnet-install script (Linux x64)
RUN mkdir -p /usr/share/dotnet
RUN curl -sSL https://dot.net/v1/dotnet-install.sh -o /tmp/dotnet-install.sh \
&& bash /tmp/dotnet-install.sh --channel 9.0 --install-dir /usr/share/dotnet --no-path
RUN ln -s /usr/share/dotnet/dotnet /usr/local/bin/dotnet
ENV DOTNET_ROOT=/usr/share/dotnet
ENV PATH="$PATH:/usr/local/bin"
WORKDIR /src
# Copy the repository sources
COPY . ./
# Restore NuGet packages and build
RUN dotnet restore ShareX.sln
RUN dotnet build ShareX.sln -c Release -v minimal /m:1
# Runtime stage (Linux) - just to hold built artifacts
FROM ubuntu:22.04
WORKDIR /app
# Copy build outputs from the build stage
COPY --from=build /src/ShareX/bin/Release ./ShareX_bin
CMD ["bash", "-lc", "echo 'ShareX container ready. Binaries located at /app/ShareX_bin'; ls -la /app/ShareX_bin ; sleep infinity"]
FROM ubuntu:22.04 AS build
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates curl git wget unzip xz-utils gnupg \
&& rm -rf /var/lib/apt/lists/*
# Install .NET 9 via dotnet-install script (Linux x64)
RUN mkdir -p /usr/share/dotnet
RUN curl -sSL https://dot.net/v1/dotnet-install.sh -o /tmp/dotnet-install.sh \
&& bash /tmp/dotnet-install.sh --channel 9.0 --install-dir /usr/share/dotnet --no-path
RUN ln -s /usr/share/dotnet/dotnet /usr/local/bin/dotnet
ENV DOTNET_ROOT=/usr/share/dotnet
ENV PATH="$PATH:/usr/local/bin"
WORKDIR /src
# Copy the repository sources
COPY . ./
# Restore NuGet packages and build
RUN dotnet restore ShareX.sln
RUN dotnet build ShareX.sln -c Release -v minimal /m:1
# Runtime stage (Linux) - just to hold built artifacts
FROM ubuntu:22.04
WORKDIR /app
# Copy build outputs from the build stage
COPY --from=build /src/ShareX/bin/Release ./ShareX_bin
CMD ["bash", "-lc", "echo 'ShareX container ready. Binaries located at /app/ShareX_bin'; ls -la /app/ShareX_bin ; sleep infinity"]
FROM mcr.microsoft.com/dotnet/sdk:9.0-windowsservercore-ltsc2022 AS build
WORKDIR /src
# Copy the repository sources
COPY . ./
# Restore NuGet packages
RUN dotnet restore ShareX.sln
# Build the solution (Release, x64)
RUN dotnet build ShareX.sln -c Release -p:Platform=x64 --nologo /m:1
# Publish the application (as a non-self-contained app; relies on runtime image for libraries)
RUN dotnet publish ShareX.sln -c Release -r win-x64 -o /out
FROM mcr.microsoft.com/dotnet/runtime:9.0-windowsservercore-ltsc2022 AS runtime
WORKDIR /app
# Copy published output from the build stage
COPY --from=build /out ./ShareX
# Default command: print location of built binaries; GUI apps won't run headless
CMD ["powershell", "-NoProfile", "-Command", "Write-Host 'ShareX container ready. Binaries located in /app/ShareX' ; while ($true) { Start-Sleep -Seconds 3600 }"]
FROM mcr.microsoft.com/dotnet/sdk:9.0-windowsservercore-ltsc2022 AS build
WORKDIR /src
# Copy the repository sources
COPY . ./
# Restore NuGet packages
RUN dotnet restore ShareX.sln
# Publish the application for Windows x64
RUN dotnet publish ShareX.sln -c Release -r win-x64 -o /app/publish
FROM mcr.microsoft.com/dotnet/runtime:9.0-windowsservercore-ltsc2022 AS runtime
WORKDIR /app
# Copy publish output from the build stage
COPY --from=build /app/publish ./
# Entry point: provide a friendly message and keep the container alive
CMD ["powershell", "-NoProfile", "-Command", "Write-Host 'ShareX container ready. Binaries located in /app'; while ($true) { Start-Sleep -Seconds 3600 }"]
# Build this ShareX project on Linux using the official .NET SDK
# and produce a Linux-compatible runtime image. The repository is Windows-oriented,
# but we publish a Linux-targeted build to provide a portable artifact inside the container.
FROM mcr.microsoft.com/dotnet/sdk:8.0-bookworm-slim AS build
WORKDIR /src
# Copy all source files into the container
COPY . .
# Restore dependencies for the solution
RUN dotnet restore ShareX.sln -r linux-x64
# Build and publish the application for linux-x64
# We publish a framework-dependent build (not self-contained) so the runtime image supplies the runtime
RUN dotnet publish ShareX.sln -c Release -o /app/publish -r linux-x64 --self-contained false /m:1
FROM mcr.microsoft.com/dotnet/runtime:8.0-bookworm-slim AS runtime
WORKDIR /app
# Install necessary system libraries for .NET apps on Linux (e.g., if the app uses System.Drawing)
RUN apt-get update \
&& apt-get install -y --no-install-recommends libgdiplus \
&& rm -rf /var/lib/apt/lists/*
COPY --from=build /app/publish .
# Run the application. If the main entrypoint is ShareX.dll, we invoke it with dotnet.
ENTRYPOINT ["dotnet", "ShareX.dll"]
# Multi-stage Dockerfile to build ShareX from source on Linux using .NET 8
# and produce a Linux-compatible runtime image.
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
# Copy all source files
COPY . ./
# Restore dependencies for the solution
RUN dotnet restore ShareX.sln --runtime linux-x64
# Publish a self-contained-free build for linux-x64 (depends on framework/runtime availability)
RUN dotnet publish ShareX.sln -c Release -o /app/publish -r linux-x64 --self-contained false /m:1
FROM mcr.microsoft.com/dotnet/runtime:8.0 AS runtime
WORKDIR /app
# Install a required native library used by some .NET drawing APIs
RUN apt-get update \
&& apt-get install -y --no-install-recommends libgdiplus \
&& rm -rf /var/lib/apt/lists/*
COPY --from=build /app/publish ./
# Entry point to run the application with dotnet
ENTRYPOINT ["dotnet", "ShareX.dll"]
# Multi-stage Dockerfile to build ShareX from source on Linux using .NET 8
# and produce a Linux-compatible runtime image.
FROM ubuntu:22.04 AS build
ENV DEBIAN_FRONTEND=noninteractive
# Install dependencies and .NET SDK 8.0
RUN apt-get update && apt-get install -y --no-install-recommends \
curl ca-certificates wget gnupg ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Add Microsoft package feed and install .NET 8 SDK
RUN curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -o packages-microsoft-prod.deb \
&& dpkg -i packages-microsoft-prod.deb \
&& rm packages-microsoft-prod.deb \
&& apt-get update \
&& apt-get install -y --no-install-recommends dotnet-sdk-8.0 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /src
COPY . ./
RUN dotnet restore ShareX.sln
RUN dotnet publish ShareX.sln -c Release -o /app/publish -r linux-x64 --self-contained false
FROM ubuntu:22.04 AS runtime
ENV DEBIAN_FRONTEND=noninteractive
# Install runtime dependencies
RUN apt-get update && apt-get install -y --no-install-recommends libgdiplus ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app/publish
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "ShareX.dll"]
# Exclude VCS and build artifacts to speed up docker build .git .gitignore # Build outputs bin/ obj/ **/bin/ **/obj/ # Node modules and package managers node_modules/ package-lock.json yarn.lock pnpm-lock.yaml # IDE/Editor files .vs/ *.user *.suo *.ntvs* *.ncb *.sdf *.cache .DS_Store # NuGet and package caches *.nupkg *.snupkg **/.nuget/packages # Logs *.log logs/ # OS junk *.tmp *.temp Thumbs.db # Misc .vscode/ .idea/
Concerns: The final runtime image does not install the .NET runtime (dotnet) or dotnet-runtime-8.0, but the ENTRYPOINT runs 'dotnet ShareX.dll'. Since --self-contained is false at publish time, the container will fail to start unless a dotnet runtime is present in the runtime image., Publishing with --self-contained false requires a runtime in the base image; the current runtime stage only installs libgdiplus and ca-certificates, which is insufficient., While the build steps appear valid, the mismatch between publishing as framework-dependent and the runtime image lacking dotnet makes the approach incorrect.
# Multi-stage Dockerfile to build ShareX from source on Linux using .NET 8
# and produce a Linux-compatible runtime image.
FROM ubuntu:22.04 AS build
ENV DEBIAN_FRONTEND=noninteractive
# Install dependencies and .NET SDK 8.0
RUN apt-get update && apt-get install -y --no-install-recommends \
curl ca-certificates wget gnupg ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Add Microsoft package feed and install .NET 8 SDK
RUN curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -o packages-microsoft-prod.deb \
&& dpkg -i packages-microsoft-prod.deb \
&& rm packages-microsoft-prod.deb \
&& apt-get update \
&& apt-get install -y --no-install-recommends dotnet-sdk-8.0 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /src
COPY . ./
# Restore and publish as a self-contained Linux binary
RUN dotnet restore ShareX.sln
RUN dotnet publish ShareX.sln -c Release -o /app/publish -r linux-x64 --self-contained true /m:1
FROM ubuntu:22.04 AS runtime
ENV DEBIAN_FRONTEND=noninteractive
# Install runtime dependencies
RUN apt-get update && apt-get install -y --no-install-recommends libgdiplus ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app/publish
COPY --from=build /app/publish ./
# Entry point to run the application binary produced by the self-contained publish
ENTRYPOINT ["./ShareX"]
- Exact error message and exit code - /usr/share/dotnet/sdk/8.0.419/NuGet.targets(465,5): error MSB3202: The project file "/src/ShareX.ImageEditor/src/ShareX.ImageEditor/ShareX.ImageEditor.csproj" was not found. [/src/ShareX.sln] - Exit code: 1 - Failing command/step - [build 6/7] RUN dotnet restore ShareX.sln - Missing packages or files mentioned - Missing file: /src/ShareX.ImageEditor/src/ShareX.ImageEditor/ShareX.ImageEditor.csproj - No explicit missing-package error reported; the issue is a missing project file referenced by the solution. - Version mismatch info - .NET SDK version shown: 8.0.419 (log starts with "Welcome to .NET 8.0!" and "SDK Version: 8.0.419") - No explicit version mismatch reported; the error is due to a missing project file referenced by the solution.
# Multi-stage Dockerfile to build ShareX from source on Linux using .NET 8
# and produce a Linux-compatible runtime image.
FROM ubuntu:22.04 AS build
ENV DEBIAN_FRONTEND=noninteractive
# Install dependencies and .NET SDK 8.0
RUN apt-get update && apt-get install -y --no-install-recommends \
curl ca-certificates wget gnupg ca-certificates \
git \
&& rm -rf /var/lib/apt/lists/*
# Add Microsoft package feed and install .NET 8 SDK
RUN curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -o packages-microsoft-prod.deb \
&& dpkg -i packages-microsoft-prod.deb \
&& rm packages-microsoft-prod.deb \
&& apt-get update \
&& apt-get install -y --no-install-recommends dotnet-sdk-8.0 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /src
COPY . ./
# Initialize and fetch git submodules if present (e.g., ShareX.ImageEditor)
RUN git submodule update --init --recursive || true
RUN dotnet restore ShareX.sln
RUN dotnet publish ShareX.sln -c Release -o /app/publish -r linux-x64 --self-contained true /m:1
FROM ubuntu:22.04 AS runtime
ENV DEBIAN_FRONTEND=noninteractive
# Install runtime dependencies
RUN apt-get update && apt-get install -y --no-install-recommends libgdiplus ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app/publish
COPY --from=build /app/publish ./
# Entry point to run the application binary produced by the self-contained publish
ENTRYPOINT ["./ShareX"]
- Exact error message and exit code - The project file "/src/ShareX.ImageEditor/src/ShareX.ImageEditor/ShareX.ImageEditor.csproj" was not found. [/src/ShareX.sln] - Exit code: 1 - Full failing command: dotnet restore ShareX.sln (in the build step [build 7/8]) - Failing command/step - [build 7/8] RUN dotnet restore ShareX.sln - Missing packages or files mentioned - Missing file: /src/ShareX.ImageEditor/src/ShareX.ImageEditor/ShareX.ImageEditor.csproj - Subtle context: the log shows an attempt to update git submodules failed with fatal: not a git repository (or any of the parent directories): .git, which could explain missing checked-out submodules that contain the project files (though the command continues with || true) - Version mismatch info - .NET SDK being used: 8.0.419 (output shows “Welcome to .NET 8.0!” and SDK Version: 8.0.419) - No explicit version mismatch shown; the failure is due to a missing project file rather than a version compatibility issue - Additional context (optional) - The error occurs during the restore phase before a later publish step, so the build cannot proceed until the missing ShareX.ImageEditor.csproj is present in the checked-out source tree (potentially due to submodule checkout issues).
ShareX is a screen capture, file sharing, and productivity tool. Key links: - Official site: https://getsharex.com - GitHub: https://github.com/ShareX/ShareX - Changelog: https://getsharex.com/changelog - Privacy policy: https://getsharex.com/privacy-policy - Downloads: https://getsharex.com/downloads - Releases (latest): https://github.com/ShareX/ShareX/releases/latest - Steam: https://store.steampowered.com/app/400040/ShareX/ - Microsoft Store: https://apps.microsoft.com/detail/9nblggh4z1sp - Discord: https://discord.gg/ShareX - Twitter: https://twitter.com/ShareX - Reddit: https://www.reddit.com/r/sharex Documents: - Image effects: https://getsharex.com/image-effects - Actions: https://getsharex.com/actions - Dev builds: https://getsharex.com/docs/dev-builds - Keybinds: https://getsharex.com/docs/keybinds - Scrolling screenshot: https://getsharex.com/docs/scrolling-screenshot - Command line arguments: https://getsharex.com/docs/command-line-arguments - Translation: https://getsharex.com/docs/translation - OCR: https://getsharex.com/docs/ocr - Custom uploader: https://getsharex.com/docs/custom-uploader - Amazon S3 guide: https://getsharex.com/docs/amazon-s3 - Google Cloud Storage guide: https://getsharex.com/docs/google-cloud-storage - Cloudflare R2 guide: https://getsharex.com/docs/cloudflare-r2 - Brand assets: https://getsharex.com/brand-assets
# Multi-stage Dockerfile for building ShareX on Windows using .NET 9 # 1) Build stage: use the .NET 9 Windows SDK to restore and publish the app FROM mcr.microsoft.com/dotnet/sdk:9.0-windowsservercore-ltsc2022 AS build WORKDIR /src # Copy repository and restore dependencies COPY . . # Restore and configure build for Windows x64 RUN dotnet restore --runtime win-x64 ShareX.sln # Publish the main ShareX project as a self-contained, runtime-win-x64 bundle # The path ShareX.csproj is assumed to be in the ShareX directory RUN dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=false -m:1 ShareX/ShareX.csproj -o /app/publish # 2) Runtime stage: run the self-contained Windows app FROM mcr.microsoft.com/dotnet/runtime:9.0-windowsservercore-ltsc2022 AS runtime WORKDIR /app # Copy the published output from the build stage COPY --from=build /app/publish . # Optional: create a non-admin user for security (Windows containers) # Note: this may require /bin/bash-like shell equivalents; using PowerShell here RUN powershell -Command "`nNew-LocalUser -Name sharex -Password (ConvertTo-SecureString 'ShareX!2024' -AsPlainText -Force) -PasswordNeverExpires; Add-LocalGroupMember -Group 'Users' -Member 'sharex'` || true # Run as non-admin user if created (ignore if not available in environment) USER sharex # Entry point to run the ShareX executable ENTRYPOINT ["ShareX.exe"]
# Multi-stage Dockerfile for building ShareX on Windows using .NET 8 # 1) Build stage: use the .NET 8 Windows SDK to restore and publish the app FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build WORKDIR /src # Copy repository and restore dependencies COPY . . # Restore and publish the main ShareX project RUN dotnet restore ShareX.sln # Publish the main ShareX project as a self-contained, runtime-win-x64 bundle RUN dotnet publish -c Release -r win-x64 --self-contained true ShareX/ShareX.csproj -o /app/publish # 2) Runtime stage: run the self-contained Windows app FROM mcr.microsoft.com/dotnet/runtime:8.0-windowsservercore-ltsc2022 AS runtime WORKDIR /app # Copy the published output from the build stage COPY --from=build /app/publish . # Create a non-admin user for security RUN powershell -Command "$Password = ConvertTo-SecureString 'ShareX!2024' -AsPlainText -Force; New-LocalUser -Name sharex -Password $Password -FullName 'ShareX' -Description 'ShareX user'; Add-LocalGroupMember -Group 'Users' -Member 'sharex'" # Run as non-admin user USER sharex # Entry point to run the ShareX executable ENTRYPOINT ["ShareX.exe"]
# Multi-stage Windows Dockerfile for building ShareX from source
# 1) Build stage: use the .NET 8 Windows SDK to restore and publish the app
FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build
WORKDIR /src
# Copy repository and restore dependencies
COPY . .
# Restore and publish the main ShareX project (Windows x64)
RUN dotnet restore ShareX.sln
RUN dotnet publish -c Release -r win-x64 -o /app/publish ShareX/ShareX.csproj
# 2) Runtime stage: run the published app on a Windows Runtime image
FROM mcr.microsoft.com/dotnet/runtime:8.0-windowsservercore-ltsc2022 AS runtime
WORKDIR /app
# Copy the published output from the build stage
COPY --from=build /app/publish .
# Create a non-admin user for security
RUN powershell -Command \
"$Password = ConvertTo-SecureString 'ShareX!2024' -AsPlainText -Force; \
New-LocalUser -Name sharex -Password $Password -FullName 'ShareX' -Description 'ShareX user'; \
Add-LocalGroupMember -Group 'Users' -Member 'sharex'"
# Run as non-admin user
USER sharex
# Entry point to run the ShareX executable
ENTRYPOINT ["ShareX.exe"]
# Multi-stage Linux Dockerfile for building ShareX from source # 1) Build stage: use the .NET 8 SDK to restore and publish the app FROM mcr.microsoft.com/dotnet/sdk:8.0-jammy AS build WORKDIR /src # Copy repository and restore dependencies COPY . ./ # Restore and publish for Linux x64 RUN dotnet restore ShareX.sln RUN dotnet publish -c Release -r linux-x64 -o /app/publish ShareX/ShareX.csproj # 2) Runtime stage: run the published app FROM mcr.microsoft.com/dotnet/runtime:8.0-jammy AS runtime WORKDIR /app # Copy the published output from the build stage COPY --from=build /app/publish ./ # Create a non-root user for security RUN useradd -m appuser USER appuser # Entry point to run the ShareX executable ENTRYPOINT ["dotnet", "ShareX.dll"]
# Multi-stage Linux Dockerfile for building ShareX from source (Linux-ready)
# Build stage: use the .NET 8 SDK to restore and publish the app for linux-x64 with self-contained runtime
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
# Install system dependencies required by some .NET components
RUN apt-get update \
&& apt-get install -y --no-install-recommends libgdiplus \
&& rm -rf /var/lib/apt/lists/*
# Copy repository and restore dependencies
COPY . .
# Restore and publish for Linux x64 with self-contained runtime to avoid needing a separate runtime on the final image
RUN dotnet restore --runtime linux-x64 ShareX.sln
RUN dotnet publish -c Release -r linux-x64 --self-contained true -p:PublishSingleFile=false ShareX/ShareX.csproj -o /app/publish
# Runtime stage: final minimal image to run the published app
FROM mcr.microsoft.com/dotnet/runtime:8.0
WORKDIR /app
# Copy the published output from the build stage
COPY --from=build /app/publish ./
# Create a non-root user for security and set permissions
RUN useradd -m sharex && chown -R sharex:sharex /app
USER sharex
# Entry point to run the ShareX executable (self-contained, Linux x64)
ENTRYPOINT ["./ShareX"]
# Windows multi-stage Dockerfile for building ShareX from source # 1) Build stage: use the .NET 8 Windows SDK to restore and publish the app FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build WORKDIR /src # Copy repository and restore dependencies COPY . . # Restore and publish the main ShareX project (Windows x64) RUN dotnet restore ShareX.sln RUN dotnet publish -c Release -r win-x64 --self-contained true -o /app/publish ShareX/ShareX.csproj # 2) Runtime stage: run the published app on Windows Runtime image FROM mcr.microsoft.com/dotnet/runtime:8.0-windowsservercore-ltsc2022 AS runtime WORKDIR /app # Copy the published output from the build stage COPY --from=build /app/publish ./ # Entry point to run the ShareX executable ENTRYPOINT ["ShareX.exe"]
# Windows multi-stage Dockerfile for building ShareX from source
# 1) Build stage: use the .NET 8 Windows SDK to restore and publish the app
FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build
WORKDIR /src
# Copy repository and restore dependencies
COPY . .
# Restore and publish the main ShareX project (Windows x64)
RUN dotnet restore ShareX.sln
RUN dotnet publish -c Release -r win-x64 --self-contained true -o /app/publish ShareX/ShareX.csproj
# 2) Runtime stage: run the published app on Windows Runtime image
FROM mcr.microsoft.com/dotnet/runtime:8.0-windowsservercore-ltsc2022 AS runtime
WORKDIR /app
# Copy the published output from the build stage
COPY --from=build /app/publish ./
# Create a non-admin user for security
RUN powershell -Command \
"$Password = ConvertTo-SecureString 'ShareX!2024' -AsPlainText -Force; \
New-LocalUser -Name sharex -Password $Password -FullName 'ShareX' -Description 'ShareX user'; \
Add-LocalGroupMember -Group 'Users' -Member 'sharex'"
# Run as non-admin user
USER sharex
# Entry point to run the ShareX executable
ENTRYPOINT ["ShareX.exe"]
No results found.
# Windows multi-stage Dockerfile for building ShareX from source
# 1) Build stage: use the .NET 8 Windows SDK to restore and publish the app
FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build
WORKDIR /src
# Copy repository and restore dependencies
COPY . .
# Restore and publish the main ShareX project (Windows x64)
RUN dotnet restore ShareX.sln
RUN dotnet publish -c Release -r win-x64 --self-contained true -o /app/publish ShareX/ShareX.csproj
# 2) Runtime stage: run the published app on Windows Runtime image
FROM mcr.microsoft.com/dotnet/runtime:8.0-windowsservercore-ltsc2022 AS runtime
WORKDIR /app
# Copy the published output from the build stage
COPY --from=build /app/publish ./
# Create a non-admin user for security
RUN powershell -Command \
"$Password = ConvertTo-SecureString 'ShareX!2024' -AsPlainText -Force; \
New-LocalUser -Name sharex -Password $Password -FullName 'ShareX' -Description 'ShareX user'; \
Add-LocalGroupMember -Group 'Users' -Member 'sharex'"
# Run as non-admin user
USER sharex
# Entry point to run the ShareX executable
ENTRYPOINT ["ShareX.exe"]
# Windows multi-stage Dockerfile for building ShareX from source
# 1) Build stage: use the .NET 8 Windows SDK to restore and publish the app
FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build
WORKDIR /src
# Copy repository and restore dependencies
COPY . .
# Restore and publish the main ShareX project (Windows x64)
RUN dotnet restore ShareX.sln
RUN dotnet publish -c Release -r win-x64 --self-contained true -o /app/publish ShareX/ShareX.csproj
# 2) Runtime stage: run the published app on Windows Runtime image
FROM mcr.microsoft.com/dotnet/runtime:8.0-windowsservercore-ltsc2022 AS runtime
WORKDIR /app
# Copy the published output from the build stage
COPY --from=build /app/publish ./
# Create a non-admin user for security
RUN powershell -Command \
"$Password = ConvertTo-SecureString 'ShareX!2024' -AsPlainText -Force; \
New-LocalUser -Name sharex -Password $Password -FullName 'ShareX' -Description 'ShareX user'; \
Add-LocalGroupMember -Group 'Users' -Member 'sharex'"
# Run as non-admin user
USER sharex
# Entry point to run the ShareX executable
ENTRYPOINT ["ShareX.exe"]
# Windows multi-stage Dockerfile for building ShareX from source
# 1) Build stage: use the .NET 8 Windows SDK to restore and publish the app
FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build
WORKDIR /src
# Copy repository and restore dependencies
COPY . .
# Restore and publish the main ShareX project (Windows x64)
RUN dotnet restore ShareX.sln
RUN dotnet publish -c Release -r win-x64 --self-contained false -o /app/publish ShareX/ShareX.csproj
# 2) Runtime stage: run the published app on Windows Runtime image
FROM mcr.microsoft.com/dotnet/runtime:8.0-windowsservercore-ltsc2022 AS runtime
WORKDIR /app
# Copy the published output from the build stage
COPY --from=build /app/publish ./
# Create a non-admin user for security
RUN powershell -Command \
"$Password = ConvertTo-SecureString 'ShareX!2024' -AsPlainText -Force; \
New-LocalUser -Name sharex -Password $Password -FullName 'ShareX' -Description 'ShareX user'; \
Add-LocalGroupMember -Group 'Users' -Member 'sharex'"
# Run as non-admin user
USER sharex
# Entry point to run the ShareX executable
ENTRYPOINT ["ShareX.exe"]
# Linux multi-stage Dockerfile for building ShareX from source (Linux-friendly build)
# 1) Build stage: use the .NET 8 SDK to restore and publish the app for linux-x64
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y --no-install-recommends libgdiplus ca-certificates curl unzip git \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /src
# Copy repository and restore dependencies
COPY . .
# Restore and publish for Linux x64 with self-contained runtime
RUN dotnet restore --runtime linux-x64 ShareX.sln
RUN dotnet publish -c Release -r linux-x64 --self-contained true -p:PublishSingleFile=false ShareX/ShareX.csproj -o /app/publish
# 2) Runtime stage: final minimal image to run the published app
FROM mcr.microsoft.com/dotnet/runtime:8.0 AS runtime
WORKDIR /app
# Copy the published output from the build stage
COPY --from=build /app/publish ./
# Create a non-root user for security
RUN useradd -m sharex && chown -R sharex:sharex /app
USER sharex
# Entry point to run the ShareX executable (Linux x64)
ENTRYPOINT ["./ShareX"]
# Linux multi-stage Dockerfile for building ShareX (Linux target)
FROM mcr.microsoft.com/dotnet/sdk:8.0-jammy AS build
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y --no-install-recommends libgdiplus ca-certificates curl unzip git \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /src
COPY . .
RUN dotnet restore ShareX.sln
RUN dotnet publish -c Release -r linux-x64 --self-contained false -o /app/publish
FROM mcr.microsoft.com/dotnet/runtime:8.0-jammy AS runtime
WORKDIR /app
COPY --from=build /app/publish ./
RUN useradd -m sharex
USER sharex
ENTRYPOINT ["dotnet", "ShareX.dll"]
# Windows multi-stage Dockerfile for building ShareX from source
# Build stage: use the .NET 9 Windows SDK to restore and publish the app
FROM mcr.microsoft.com/dotnet/sdk:9.0-windowsservercore-ltsc2022 AS build
WORKDIR /src
# Copy repository and restore dependencies
COPY . .
# Restore and publish the ShareX project (Windows x64)
RUN dotnet restore ShareX.sln
RUN dotnet publish -c Release -r win-x64 --no-self-contained -p:PublishSingleFile=false ShareX/ShareX.csproj -o /app/publish
# Runtime stage: run the published app on Windows runtime image
FROM mcr.microsoft.com/dotnet/runtime:9.0-windowsservercore-ltsc2022 AS runtime
WORKDIR /app
# Copy the published output from the build stage
COPY --from=build /app/publish ./
# Create a non-admin user for security
RUN powershell -Command \
"New-LocalUser -Name sharex -Password (ConvertTo-SecureString 'ShareX!2024' -AsPlainText -Force) -FullName 'ShareX' -Description 'ShareX user'; \
Add-LocalGroupMember -Group 'Users' -Member 'sharex'"
# Run as non-admin user
USER sharex
# Entry point to run the ShareX executable
ENTRYPOINT ["ShareX.exe"]
# Windows multi-stage Dockerfile for building ShareX from source
# 1) Build stage: use the .NET 8 Windows SDK to restore and publish the app
FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build
WORKDIR /src
# Copy repository and restore dependencies
COPY . .
# Restore and publish the ShareX project (Windows x64)
RUN dotnet restore ShareX.sln
RUN dotnet publish -c Release -r win-x64 --self-contained true -o /app/publish ShareX/ShareX.csproj
# 2) Runtime stage: run the published app on Windows runtime image
FROM mcr.microsoft.com/dotnet/runtime:8.0-windowsservercore-ltsc2022 AS runtime
WORKDIR /app
# Copy the published output from the build stage
COPY --from=build /app/publish ./
# Create a non-admin user for security
RUN powershell -Command \
"New-LocalUser -Name sharex -Password (ConvertTo-SecureString 'ShareX!2024' -AsPlainText -Force) -FullName 'ShareX' -Description 'ShareX user'; \
Add-LocalGroupMember -Group 'Users' -Member 'sharex'"
# Run as non-admin user
USER sharex
# Entry point to run the ShareX executable
ENTRYPOINT ["ShareX.exe"]
# Windows multi-stage Dockerfile for building ShareX from source
# 1) Build stage: use the .NET 8 Windows SDK to restore and publish the app
FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build
WORKDIR /src
# Copy repository and restore dependencies
COPY . .
# Restore and publish the ShareX project (Windows x64)
RUN dotnet restore ShareX.sln
RUN dotnet publish -c Release -r win-x64 --self-contained true -o /app/publish ShareX/ShareX.csproj
# 2) Runtime stage: run the published app on Windows runtime image
FROM mcr.microsoft.com/dotnet/runtime:8.0-windowsservercore-ltsc2022 AS runtime
WORKDIR /app
# Copy the published output from the build stage
COPY --from=build /app/publish ./
# Create a non-admin user for security
RUN powershell -Command \
"New-LocalUser -Name sharex -Password (ConvertTo-SecureString 'ShareX!2024' -AsPlainText -Force) -FullName 'ShareX' -Description 'ShareX user'; \
Add-LocalGroupMember -Group 'Users' -Member 'sharex'"
# Run as non-admin user
USER sharex
# Entry point to run the ShareX executable
ENTRYPOINT ["ShareX.exe"]
# Multi-stage Linux container to build ShareX (Linux-ready)
# Stage 1: Build
FROM ubuntu:22.04 AS build
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates curl gpg unzip git libgdiplus \
&& rm -rf /var/lib/apt/lists/*
# Install Microsoft package repository for .NET
RUN wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \
&& dpkg -i packages-microsoft-prod.deb \
&& rm packages-microsoft-prod.deb \
&& apt-get update
# Install .NET 8 SDK for Linux
RUN apt-get install -y dotnet-sdk-8.0
WORKDIR /src
# Copy repository and restore dependencies
COPY . .
# Restore and publish for Linux x64 with self-contained runtime and single file
RUN dotnet restore --runtime linux-x64 ShareX.sln
RUN dotnet publish -c Release -r linux-x64 --self-contained true -p:PublishSingleFile=true ShareX/ShareX.csproj -o /app/publish
# Stage 2: Runtime - final minimal image to run the published app
FROM ubuntu:22.04 AS runtime
WORKDIR /app
# Copy the published output from the build stage
COPY --from=build /app/publish ./
# Create a non-root user for security
RUN useradd -m sharex
USER sharex
# Entry point to run the ShareX executable (Linux x64)
ENTRYPOINT ["./ShareX"]
# Ignore common build/test directories .git .vscode *.user *.sln.dbo bin/ obj/ *.pdb *.dll *.cache *.md **/node_modules/
- Exact error message and exit code - /bin/sh: 1: wget: not found - exit code: 127 - Failing command/step - [build 3/8] RUN wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb && dpkg -i packages-microsoft-prod.deb && rm packages-microsoft-prod.deb && apt-get update - Missing packages or files mentioned - wget is not installed in the image, causing the failure - Version mismatch info - Base image: ubuntu:22.04 with digest ce4a593b4e323dcc3dd728e397e0a866a1bf516a1b7c31d6aa06991baec4f2e0 - No explicit version mismatch reported; the issue is missing wget during the RUN command.
# Linux multi-stage Dockerfile for building ShareX (Linux target)
# Stage 1: Build
FROM ubuntu:22.04 AS build
ENV DEBIAN_FRONTEND=noninteractive
# Install required tools and .NET SDK prerequisites
RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates curl gnupg lsb-release unzip git \
&& rm -rf /var/lib/apt/lists/*
# Install Microsoft package repository for .NET 8 on Ubuntu 22.04
RUN curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -o packages-microsoft-prod.deb \
&& dpkg -i packages-microsoft-prod.deb \
&& rm packages-microsoft-prod.deb \
&& apt-get update
# Install .NET 8 SDK for Linux
RUN apt-get install -y dotnet-sdk-8.0
WORKDIR /src
# Copy repository and restore dependencies
COPY . .
# Restore and publish for Linux x64 with self-contained runtime
RUN dotnet restore --runtime linux-x64 ShareX.sln
RUN dotnet publish -c Release -r linux-x64 --self-contained true -o /app/publish ShareX/ShareX.csproj
# Stage 2: Runtime - final minimal image to run the published app
FROM ubuntu:22.04 AS runtime
WORKDIR /app
# Copy the published output from the build stage
COPY --from=build /app/publish ./
# Create a non-root user for security
RUN useradd -m sharex
USER sharex
# Entry point to run the ShareX executable (Linux x64)
ENTRYPOINT ["./ShareX"]
- Exact error message and exit code: - The project file "/src/ShareX.ImageEditor/src/ShareX.ImageEditor/ShareX.ImageEditor.csproj" was not found. [/src/ShareX.sln] - Exit code: 1 - Failing command/step: - dotnet restore --runtime linux-x64 ShareX.sln (build step 7/8) - Missing packages or files mentioned: - Missing project file: /src/ShareX.ImageEditor/src/ShareX.ImageEditor/ShareX.ImageEditor.csproj - Version mismatch / environment info: - .NET SDK version referenced: 8.0.419 (SDK Version: 8.0.419) - The error occurs during a restore of ShareX.sln using the Linux-x64 runtime, indicating a mismatch between the solution’s referenced project paths and the actual file layout in the build context.
# Windows multi-stage Dockerfile for building ShareX from source
# Stage 1: Build
FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build
WORKDIR /src
# Copy repository and restore dependencies
COPY . .
# Restore dependencies and publish the ShareX project for Windows x64 as self-contained
RUN dotnet restore ShareX.sln
RUN dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=false ShareX/ShareX.csproj -o /app/publish
# Stage 2: Runtime
FROM mcr.microsoft.com/dotnet/runtime:8.0-windowsservercore-ltsc2022 AS runtime
WORKDIR /app
# Copy the published output from the build stage
COPY --from=build /app/publish ./
# Create a non-admin user for security
RUN powershell -Command \
"New-LocalUser -Name sharex -Password (ConvertTo-SecureString 'ShareX!2024' -AsPlainText -Force); \
Add-LocalGroupMember -Group 'Users' -Member 'sharex'"
# Run as non-admin user
USER sharex
# Entry point to run the ShareX executable
ENTRYPOINT ["ShareX.exe"]
# Windows multi-stage Dockerfile for building ShareX from source
# 1) Build stage: use the .NET 8 Windows SDK to restore and publish the app
FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build
WORKDIR /src
# Copy repository and restore dependencies
COPY . .
# Restore only the main UI project to avoid Windows-only submodules not present in the build context
RUN dotnet restore ShareX/ShareX.csproj
# Publish the main ShareX project as a self-contained Windows x64 app
RUN dotnet publish -c Release -r win-x64 --self-contained true ShareX/ShareX.csproj -o /app/publish
# 2) Runtime stage: run the published app on Windows runtime image
FROM mcr.microsoft.com/dotnet/runtime:8.0-windowsservercore-ltsc2022 AS runtime
WORKDIR /app
# Copy the published output from the build stage
COPY --from=build /app/publish ./
# Create a non-admin user for security
RUN powershell -Command \
"$Password = ConvertTo-SecureString 'ShareX!2024' -AsPlainText -Force; \
New-LocalUser -Name sharex -Password $Password -FullName 'ShareX' -Description 'ShareX user'; \
Add-LocalGroupMember -Group 'Users' -Member 'sharex'"
# Run as non-admin user
USER sharex
# Entry point to run the ShareX executable
ENTRYPOINT ["ShareX.exe"]
# Linux multi-stage Dockerfile for building ShareX (Linux target)
# Stage 1: Build
FROM ubuntu:22.04 AS build
ENV DEBIAN_FRONTEND=noninteractive
# Install required tooling and .NET prerequisites
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates curl gnupg lsb-release unzip git libgdiplus \
&& rm -rf /var/lib/apt/lists/*
# Install Microsoft APT repository and .NET 8 SDK
RUN curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -o packages-microsoft-prod.deb \
&& dpkg -i packages-microsoft-prod.deb \
&& rm packages-microsoft-prod.deb \
&& apt-get update \
&& apt-get install -y dotnet-sdk-8.0 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /src
# Copy repository and restore dependencies
COPY . .
# Restore and publish for Linux x64 with self-contained runtime
RUN dotnet restore --runtime linux-x64 ShareX/ShareX.csproj
RUN dotnet publish -c Release -r linux-x64 --self-contained true ShareX/ShareX.csproj -o /app/publish
# Stage 2: Runtime - final minimal image to run the published app
FROM ubuntu:22.04 AS runtime
WORKDIR /app
# Copy the published output from the build stage
COPY --from=build /app/publish ./
# Create a non-root user for security
RUN useradd -m sharex
USER sharex
# Entry point to run the ShareX executable (Linux x64)
ENTRYPOINT ["./ShareX"]
- Failing command/step: - [build 6/7] RUN dotnet restore --runtime linux-x64 ShareX/ShareX.csproj - Exit code: - 1 - Exact error messages (illustrative excerpts from the log): - "Skipping project \"/src/ShareX.ImageEditor/src/ShareX.ImageEditor/ShareX.ImageEditor.csproj\" because it was not found." - "/usr/share/dotnet/sdk/8.0.419/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets(166,5): error NETSDK1045: The current .NET SDK does not support targeting .NET 9.0. Either target .NET 8.0 or lower, or use a version of the .NET SDK that supports .NET 9.0. Download the .NET SDK from https://aka.ms/dotnet/download [/src/ShareX.HistoryLib/ShareX.HistoryLib.csproj]" - (Note: the same NETSDK1045 message is reported for multiple projects: ShareX.ImageEffectsLib.csproj, ShareX.MediaLib.csproj, ShareX.IndexerLib.csproj, ShareX.ScreenCaptureLib.csproj, ShareX.HelpersLib.csproj, ShareX.UploadersLib.csproj, ShareX/ShareX.csproj.) - Missing packages/files mentioned: - Missing file: /src/ShareX.ImageEditor/src/ShareX.ImageEditor/ShareX.ImageEditor.csproj (logged as "Skipping project ... because it was not found.") - Version mismatch information: - The build installed .NET SDK appears as: SDK Version: 8.0.419 (path: /usr/share/dotnet/sdk/8.0.419). - The projects target .NET 9.0, which is not supported by the installed SDK (NETSDK1045). - Context note: - The Dockerfile line around the failure is: Dockerfile:27, which runs dotnet restore --runtime linux-x64 ShareX/ShareX.csproj.