diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml
index 311cb0d2..d393f9f8 100644
--- a/.github/workflows/build-and-release.yml
+++ b/.github/workflows/build-and-release.yml
@@ -1,30 +1,39 @@
-# This workflow will build the project using .NET 4 then publish to GitHub releases
-# Due to running .NET 4 this workflow needs to run on windows-2019 (support dropped on windows 2022)
-# Changes would need to be made for using .NET 5 and later on linux
-
name: Build
on:
push:
branches: [ master ]
+
+env:
+ PROJECT: "MinecraftClient"
+ target-version: "net6.0"
+ compile-flags: "--no-self-contained -c Release -p:UseAppHost=true -p:IncludeNativeLibrariesForSelfExtract=true -p:DebugType=None"
jobs:
build:
- runs-on: windows-2019
-
- env:
- PROJECT: "MinecraftClient"
+ runs-on: ubuntu-latest
steps:
- - name: SetupMSBuild
- uses: microsoft/setup-msbuild@v1
+ - name: Setup Project Path
+ run: |
+ echo project-path=${{ github.workspace }}/${{ env.PROJECT }} >> $GITHUB_ENV
+
+ - name: Setup Output Paths
+ run: |
+ echo win-out-path=${{ env.project-path }}/bin/Release/${{ env.target-version }}/win-x64/publish/ >> $GITHUB_ENV
+ echo linux-out-path=${{ env.project-path }}/bin/Release/${{ env.target-version }}/linux-x64/publish/ >> $GITHUB_ENV
+ echo osx-out-path=${{ env.project-path }}/bin/Release/${{ env.target-version }}/osx-x64/publish/ >> $GITHUB_ENV
+
+ - name: Setup .NET SDK
+ uses: actions/setup-dotnet@v2.1.0
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
+ submodules: 'true'
- - name: DateVersion
+ - name: Get Version DateTime
id: date-version
uses: nanzm/get-time-action@v1.0
with:
@@ -33,26 +42,61 @@ jobs:
- name: VersionInfo
run: |
- # PowerShell commands
- set COMMIT "${{ github.sha }}".substring(0, 7)
- '' >> ${{ github.workspace }}\${{ env.PROJECT }}\Properties\AssemblyInfo.cs
- "[assembly: AssemblyConfiguration(`"GitHub build ${{ github.run_number }}, built on ${{ steps.date-version.outputs.time }} from commit $COMMIT`")]" >> ${{ github.workspace }}\${{ env.PROJECT }}\Properties\AssemblyInfo.cs
+ COMMIT=$(echo ${{ github.sha }} | cut -c 1-7)
+ echo '' >> ${{ env.project-path }}\Properties\AssemblyInfo.cs
+ echo "[assembly: AssemblyConfiguration(\"GitHub build ${{ github.run_number }}, built on ${{ steps.date-version.outputs.time }} from commit $COMMIT\")]" >> ${{ env.project-path }}\Properties\AssemblyInfo.cs
+
+ - name: Build for Windows
+ run: dotnet publish ${{ env.project-path }}.sln -f ${{ env.target-version }} -r win-x64 ${{ env.compile-flags }}
- - name: Build
- run: msbuild ${{ github.workspace }}\${{ env.PROJECT }}.sln /t:clean,build /p:Configuration=Release /p:Platform="x86" /p:TargetFrameworkVersion="v4.0" /verbosity:minimal
+ - name: Zip Windows Build
+ run: zip -qq -r windows.zip *
+ working-directory: ${{ env.win-out-path }}
- - name: DateRelease
+ - name: Build for Linux
+ run: dotnet publish ${{ env.project-path }}.sln -f ${{ env.target-version }} -r linux-x64 ${{ env.compile-flags }}
+
+ - name: Zip Linux Build
+ run: zip -qq -r linux.zip *
+ working-directory: ${{ env.linux-out-path }}
+
+ - name: Build for OSX
+ run: dotnet publish ${{ env.project-path }}.sln -f ${{ env.target-version }} -r osx-x64 ${{ env.compile-flags }}
+
+ - name: Zip OSX Build
+ run: zip -qq -r osx.zip *
+ working-directory: ${{ env.osx-out-path }}
+
+ - name: Get Release DateTime
id: date-release
uses: nanzm/get-time-action@v1.0
with:
timeZone: 0
format: 'YYYYMMDD'
- - name: Release
+ - name: Windows Release
uses: tix-factory/release-manager@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
mode: uploadReleaseAsset
- filePath: ${{ github.workspace }}\${{env.PROJECT}}\bin\Release\${{ env.PROJECT }}.exe
- assetName: ${{ env.PROJECT }}.exe
+ filePath: ${{ env.win-out-path }}windows.zip
+ assetName: ${{ env.PROJECT }}-windows.zip
+ tag: ${{ format('{0}-{1}', steps.date-release.outputs.time, github.run_number) }}
+
+ - name: Linux Release
+ uses: tix-factory/release-manager@v1
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ mode: uploadReleaseAsset
+ filePath: ${{ env.linux-out-path }}linux.zip
+ assetName: ${{ env.PROJECT }}-linux.zip
+ tag: ${{ format('{0}-{1}', steps.date-release.outputs.time, github.run_number) }}
+
+ - name: OSX Release
+ uses: tix-factory/release-manager@v1
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ mode: uploadReleaseAsset
+ filePath: ${{ env.osx-out-path }}osx.zip
+ assetName: ${{ env.PROJECT }}-osx.zip
tag: ${{ format('{0}-{1}', steps.date-release.outputs.time, github.run_number) }}
diff --git a/ConsoleInteractive b/ConsoleInteractive
index 27c73d0d..8a3b9bcd 160000
--- a/ConsoleInteractive
+++ b/ConsoleInteractive
@@ -1 +1 @@
-Subproject commit 27c73d0dc062f62e6fb64b23b14bf443c1577b90
+Subproject commit 8a3b9bcd03d73aa1d218e8cffb19248f3a487dd4
diff --git a/MinecraftClient/MinecraftClient.csproj b/MinecraftClient/MinecraftClient.csproj
index 832f73c5..46d57543 100644
--- a/MinecraftClient/MinecraftClient.csproj
+++ b/MinecraftClient/MinecraftClient.csproj
@@ -6,6 +6,8 @@
false
default
enable
+ true
+ true
false
diff --git a/README.md b/README.md
index 54845ffc..d8df1b28 100644
--- a/README.md
+++ b/README.md
@@ -38,25 +38,27 @@ For the names of the translation file, please see [this comment](https://github.
_The recommended development environment is [Visual Studio](https://visualstudio.microsoft.com/). If you want to build the project without installing a development environment, you may also follow these instructions:_
-First of all, get a [zip of source code](https://github.com/MCCTeam/Minecraft-Console-Client/archive/master.zip), extract it and navigate to the `MinecraftClient` folder.
+First of all, download the .NET 6.0 SDK [here](https://dotnet.microsoft.com/en-us/download) and follow the install instructions.
-Edit `MinecraftClient.csproj` to set the Build target to `Release` on [line 4](https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/MinecraftClient.csproj#L4):
-
-```xml
-Release
-```
+Get a [zip of source code](https://github.com/MCCTeam/Minecraft-Console-Client/archive/master.zip), extract it and navigate to the `MinecraftClient` folder.
### On Windows 🪟
-1. Locate `MSBuild.exe` for .NET 4 inside `C:\Windows\Microsoft.NET\Framework\v4.X.XXXXX`
-2. Drag and drop `MinecraftClient.csproj` over `MSBuild.exe` to launch the build
-3. If the build succeeds, you can find `MinecraftClient.exe` under `MinecraftClient\bin\Release`
+1. Open a Terminal / Command Prompt.
+2. Type in `dotnet publish --no-self-contained -r win-x64 -c Release`.
+3. If the build succeeds, you can find `MinecraftClient.exe` under `MinecraftClient\bin\Release\net6.0\win-x64\publish\`
-### On Mac and Linux 🐧
+### On Linux 🐧
-1. Install the [Mono Framework](https://www.mono-project.com/download/stable/#download-lin) if not already installed
-2. Run `msbuild MinecraftClient.csproj` in a terminal
-3. If the build succeeds, you can find `MinecraftClient.exe` under `MinecraftClient\bin\Release`
+1. Open a Terminal / Command Prompt.
+2. Type in `dotnet publish --no-self-contained -r linux-x64 -c Release`.
+3. If the build succeeds, you can find `MinecraftClient` under `MinecraftClient\bin\Release\net6.0\linux-x64\publish\`
+
+### On Mac 🍎
+
+1. Open a Terminal / Command Prompt.
+2. Type in `dotnet publish --no-self-contained -r osx-x64 -c Release`.
+3. If the build succeeds, you can find `MinecraftClient` under `MinecraftClient\bin\Release\net6.0\osx-x64\publish\`
## License ⚖️