Merge pull request #473 from LiamSho/master

ci.GitHub Actiona 配置
Make GitHub Actions Great Again
This commit is contained in:
Alisa
2022-05-10 00:27:32 +08:00
committed by GitHub
31 changed files with 1314 additions and 615 deletions

61
.github/workflows/maa-dev-build.yaml vendored Normal file
View File

@@ -0,0 +1,61 @@
name: "Maa Dev Build"
on:
push:
branches:
- dev
paths:
- src/MeoAssistant/**
- src/MeoAssistantBuilder/**
- src/MeoAsstGui/**
- 3rdparty/**
- include/**
- MeoAssistantArknights.sln
pull_request:
paths:
- src/MeoAssistant/**
- src/MeoAssistantBuilder/**
- src/MeoAsstGui/**
- 3rdparty/**
- include/**
- MeoAssistantArknights.sln
workflow_dispatch:
jobs:
build:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup .NET 6.0.x
uses: actions/setup-dotnet@v2
with:
dotnet-version: 6.0.x
- name: Run dev build task
run: pwsh .\build.ps1 DevBuild
- name: Read file name
id: read_path
run: pwsh .\read_path.ps1 ./artifacts MaaBundle*
- name: Upload Artifacts 0
uses: actions/upload-artifact@v3
with:
name: ${{ steps.read_path.outputs.name_0 }}
path: ${{ steps.read_path.outputs.path_0 }}
- name: Upload Artifacts 1
uses: actions/upload-artifact@v3
with:
name: ${{ steps.read_path.outputs.name_1 }}
path: ${{ steps.read_path.outputs.path_1 }}
- name: Upload Artifacts 2
uses: actions/upload-artifact@v3
with:
name: ${{ steps.read_path.outputs.name_2 }}
path: ${{ steps.read_path.outputs.path_2 }}

View File

@@ -1,30 +1,30 @@
name: Azure Static Web Apps CI/CD
on:
push:
branches:
- master
paths:
- "docs/*"
jobs:
build_and_deploy:
runs-on: ubuntu-latest
name: Build and Deploy Job
if: github.repository_owner == 'MaaAssistantArknights'
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Build And Deploy
id: builddeploy
uses: Azure/static-web-apps-deploy@v1
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_GENTLE_DESERT_00290F400 }}
repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments)
action: "upload"
###### Repository/Build Configurations - These values can be configured to match your app requirements. ######
# For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig
app_location: "/docs" # App source code path
api_location: "" # Api source code path - optional
output_location: ".vuepress/dist" # Built app content directory - optional
name: Deploy Docs
on:
push:
branches:
- master
paths:
- "docs/*"
workflow_dispatch:
jobs:
build_and_deploy:
runs-on: ubuntu-latest
name: Build and Deploy Job
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Build And Deploy
id: builddeploy
uses: Azure/static-web-apps-deploy@v1
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_GENTLE_DESERT_00290F400 }}
repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments)
action: "upload"
###### Repository/Build Configurations - These values can be configured to match your app requirements. ######
# For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig
app_location: "/docs" # App source code path
api_location: "" # Api source code path - optional
output_location: ".vuepress/dist" # Built app content directory - optional

View File

@@ -0,0 +1,45 @@
name: Release MaaBundle
on:
release:
types:
- published
jobs:
release-bundle:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Get tag
id: tag
uses: dawidd6/action-get-tag@v1
- name: Setup .NET 6.0.x
uses: actions/setup-dotnet@v2
with:
dotnet-version: 6.0.x
- name: Run release core task
run: pwsh .\build.ps1 ReleaseBundle
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: MaaBundle-${{ steps.tag.outputs.tag }}
path: ./artifacts/MaaBundle*
- name: Upload release assets
uses: xresloader/upload-to-github-release@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
file: ./artifacts/MaaBundle*
tags: true
draft: false
verbose: true

45
.github/workflows/maa-release-core.yaml vendored Normal file
View File

@@ -0,0 +1,45 @@
name: Release MaaCore
on:
release:
types:
- published
jobs:
release-core:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Get tag
id: tag
uses: dawidd6/action-get-tag@v1
- name: Setup .NET 6.0.x
uses: actions/setup-dotnet@v2
with:
dotnet-version: 6.0.x
- name: Run release core task
run: pwsh .\build.ps1 ReleaseCore
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: MaaCore-${{ steps.tag.outputs.tag }}
path: ./artifacts/MaaCore*
- name: Upload release assets
uses: xresloader/upload-to-github-release@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
file: ./artifacts/MaaCore*
tags: true
draft: false
verbose: true

View File

@@ -0,0 +1,39 @@
name: Release MaaResource
on:
push:
branches:
- master
paths:
- resource/**
- 3rdparty/resource/**
workflow_dispatch:
jobs:
release-resource:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup .NET 6.0.x
uses: actions/setup-dotnet@v2
with:
dotnet-version: 6.0.x
- name: Run release resource task
run: pwsh .\build.ps1 ReleaseResource
- name: Read file name
id: read_path
run: pwsh .\read_path.ps1 ./artifacts MaaResource*
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: ${{ steps.read_path.outputs.name_0 }}
path: ${{ steps.read_path.outputs.path_0 }}

38
.github/workflows/maa-release-wpf.yaml vendored Normal file
View File

@@ -0,0 +1,38 @@
name: Release MaaWpf
on:
push:
branches:
- master
paths:
- src/MeoAsstGui/**
workflow_dispatch:
jobs:
release-wpf:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup .NET 6.0.x
uses: actions/setup-dotnet@v2
with:
dotnet-version: 6.0.x
- name: Run release wpf task
run: pwsh .\build.ps1 ReleaseWpf
- name: Read file name
id: read_path
run: pwsh .\read_path.ps1 ./artifacts MaaWpf*
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: ${{ steps.read_path.outputs.name_0 }}
path: ${{ steps.read_path.outputs.path_0 }}

1
.gitignore vendored
View File

@@ -436,3 +436,4 @@ adb_screen.png
tools/**/*.png
resource/infrast
.vscode
!3rdparty/tools/*

View File

@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.31515.178
# Visual Studio Version 17
VisualStudioVersion = 17.1.32414.318
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{6C4B8D52-51D1-45F8-AAEC-808035443FD6}"
EndProject
@@ -11,9 +11,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestCaller", "tools\TestCal
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MeoAsstGui", "src\MeoAsstGui\MeoAsstGui.csproj", "{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}"
ProjectSection(ProjectDependencies) = postProject
{362D1E30-F5AE-4279-9985-65C27B3BA300} = {362D1E30-F5AE-4279-9985-65C27B3BA300}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TransparentImageCvt", "tools\TransparentImageCvt\TransparentImageCvt.vcxproj", "{093A3174-A27E-4D23-B64E-16F9448AD5AC}"
EndProject
@@ -24,44 +21,52 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
.editorconfig = .editorconfig
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MeoAssistantBuilder", "src\MeoAssistantBuilder\MeoAssistantBuilder.csproj", "{8D9036DD-75F1-4BD0-89E2-DFB37B925DA3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
CICD|x64 = CICD|x64
Debug|x64 = Debug|x64
Release|x64 = Release|x64
Release|x86 = Release|x86
RelWithDebInfo|x64 = RelWithDebInfo|x64
RelWithDebInfo|x86 = RelWithDebInfo|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.CICD|x64.ActiveCfg = RelWithDebInfo|x64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.CICD|x64.Build.0 = RelWithDebInfo|x64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.Debug|x64.ActiveCfg = RelWithDebInfo|x64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.Debug|x64.Build.0 = RelWithDebInfo|x64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.Release|x64.ActiveCfg = Release|x64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.Release|x64.Build.0 = Release|x64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.Release|x86.ActiveCfg = Release|x64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Release|x64.ActiveCfg = Release|Any CPU
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Release|x64.Build.0 = Release|Any CPU
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Release|x86.ActiveCfg = Release|Any CPU
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Release|x86.Build.0 = Release|Any CPU
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|Any CPU
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|Any CPU
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|Any CPU
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|Any CPU
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.CICD|x64.ActiveCfg = CICD|x64
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.CICD|x64.Build.0 = CICD|x64
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Debug|x64.ActiveCfg = Release|x64
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Release|x64.ActiveCfg = Release|x64
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Release|x64.Build.0 = Release|x64
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
{093A3174-A27E-4D23-B64E-16F9448AD5AC}.CICD|x64.ActiveCfg = Release|x64
{093A3174-A27E-4D23-B64E-16F9448AD5AC}.CICD|x64.Build.0 = Release|x64
{093A3174-A27E-4D23-B64E-16F9448AD5AC}.Debug|x64.ActiveCfg = Release|x64
{093A3174-A27E-4D23-B64E-16F9448AD5AC}.Debug|x64.Build.0 = Release|x64
{093A3174-A27E-4D23-B64E-16F9448AD5AC}.Release|x64.ActiveCfg = Release|x64
{093A3174-A27E-4D23-B64E-16F9448AD5AC}.Release|x64.Build.0 = Release|x64
{093A3174-A27E-4D23-B64E-16F9448AD5AC}.Release|x86.ActiveCfg = Release|Win32
{093A3174-A27E-4D23-B64E-16F9448AD5AC}.Release|x86.Build.0 = Release|Win32
{093A3174-A27E-4D23-B64E-16F9448AD5AC}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{093A3174-A27E-4D23-B64E-16F9448AD5AC}.RelWithDebInfo|x64.Build.0 = Release|x64
{093A3174-A27E-4D23-B64E-16F9448AD5AC}.RelWithDebInfo|x86.ActiveCfg = Release|Win32
{093A3174-A27E-4D23-B64E-16F9448AD5AC}.RelWithDebInfo|x86.Build.0 = Release|Win32
{362D1E30-F5AE-4279-9985-65C27B3BA300}.CICD|x64.ActiveCfg = CICD|x64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.CICD|x64.Build.0 = CICD|x64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.Debug|x64.ActiveCfg = RelWithDebInfo|x64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.Debug|x64.Build.0 = RelWithDebInfo|x64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.Release|x64.ActiveCfg = Release|x64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.Release|x64.Build.0 = Release|x64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.Release|x86.ActiveCfg = Release|x64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.Release|x86.Build.0 = Release|x64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|x64
{8D9036DD-75F1-4BD0-89E2-DFB37B925DA3}.CICD|x64.ActiveCfg = Release|x64
{8D9036DD-75F1-4BD0-89E2-DFB37B925DA3}.CICD|x64.Build.0 = Release|x64
{8D9036DD-75F1-4BD0-89E2-DFB37B925DA3}.Debug|x64.ActiveCfg = Debug|x64
{8D9036DD-75F1-4BD0-89E2-DFB37B925DA3}.Release|x64.ActiveCfg = Release|x64
{8D9036DD-75F1-4BD0-89E2-DFB37B925DA3}.Release|x64.Build.0 = Release|x64
{8D9036DD-75F1-4BD0-89E2-DFB37B925DA3}.RelWithDebInfo|x64.ActiveCfg = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

16
build.ps1 Normal file
View File

@@ -0,0 +1,16 @@
if ($args.Length -ne 1) {
throw "One argument required"
}
$target = $args[0]
$valid_targets = @("ReleaseCore", "ReleaseWpf", "ReleaseResource", "ReleaseBundle", "DevBuild")
if (!$valid_targets.Contains($target)) {
throw "$target is not a valid target"
}
Set-Location -Path .\src\MeoAssistantBuilder
dotnet run -- --target $target
Set-Location -Path ..\..\

16
read_path.ps1 Normal file
View File

@@ -0,0 +1,16 @@
if ($args.Length -ne 2) {
throw "Need two arguments"
}
$fs = Get-ChildItem -Path $args[0] -Filter $args[1]
$index = 0
foreach($f in $fs) {
$name = $f.Name
$path = $f.FullName
Write-Output "::set-output name=name_$index::$name"
Write-Output "::set-output name=path_$index::$path"
$index = $index + 1
}

View File

@@ -1,280 +1,337 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="RelWithDebInfo|x64">
<Configuration>RelWithDebInfo</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\include\AsstCaller.h" />
<ClInclude Include="..\..\include\AsstPort.h" />
<ClInclude Include="AbstractConfiger.h" />
<ClInclude Include="AbstractImageAnalyzer.h" />
<ClInclude Include="AbstractResource.h" />
<ClInclude Include="AbstractTask.h" />
<ClInclude Include="AbstractTaskPlugin.h" />
<ClInclude Include="Assistant.h" />
<ClInclude Include="AsstInfrastDef.h" />
<ClInclude Include="AsstUtils.hpp" />
<ClInclude Include="AsstDef.h" />
<ClInclude Include="AsstMsg.h" />
<ClInclude Include="AutoRecruitTask.h" />
<ClInclude Include="BattleImageAnalyzer.h" />
<ClInclude Include="ReplenishOriginiumShardTaskPlugin.h" />
<ClInclude Include="RoguelikeBattleTaskPlugin.h" />
<ClInclude Include="CreditShopImageAnalyzer.h" />
<ClInclude Include="DronesForShamareTaskPlugin.h" />
<ClInclude Include="GeneralConfiger.h" />
<ClInclude Include="CreditShoppingTask.h" />
<ClInclude Include="HashImageAnalyzer.h" />
<ClInclude Include="InfrastAbstractTask.h" />
<ClInclude Include="InfrastClueImageAnalyzer.h" />
<ClInclude Include="InfrastConfiger.h" />
<ClInclude Include="InfrastControlTask.h" />
<ClInclude Include="InfrastDormTask.h" />
<ClInclude Include="InfrastFacilityImageAnalyzer.h" />
<ClInclude Include="InfrastInfoTask.h" />
<ClInclude Include="InfrastMfgTask.h" />
<ClInclude Include="InfrastOfficeTask.h" />
<ClInclude Include="InfrastOperImageAnalyzer.h" />
<ClInclude Include="InfrastPowerTask.h" />
<ClInclude Include="InfrastProductionTask.h" />
<ClInclude Include="InfrastClueVacancyImageAnalyzer.h" />
<ClInclude Include="InfrastReceptionTask.h" />
<ClInclude Include="InfrastSmileyImageAnalyzer.h" />
<ClInclude Include="InfrastTradeTask.h" />
<ClInclude Include="MultiMatchImageAnalyzer.h" />
<ClInclude Include="OcrImageAnalyzer.h" />
<ClInclude Include="OcrPack.h" />
<ClInclude Include="PenguinPack.h" />
<ClInclude Include="RecruitImageAnalyzer.h" />
<ClInclude Include="AipOcr.h" />
<ClInclude Include="Resource.h" />
<ClInclude Include="ItemConfiger.h" />
<ClInclude Include="Logger.hpp" />
<ClInclude Include="RecruitTask.h" />
<ClInclude Include="ProcessTask.h" />
<ClInclude Include="ProcessTaskImageAnalyzer.h" />
<ClInclude Include="RecruitConfiger.h" />
<ClInclude Include="RoguelikeFormationTaskPlugin.h" />
<ClInclude Include="RoguelikeFormationImageAnalyzer.h" />
<ClInclude Include="RuntimeStatus.h" />
<ClInclude Include="StageDropsTaskPlugin.h" />
<ClInclude Include="TaskData.h" />
<ClInclude Include="MatchImageAnalyzer.h" />
<ClInclude Include="TemplResource.h" />
<ClInclude Include="TilePack.h" />
<ClInclude Include="UserConfiger.h" />
<ClInclude Include="Version.h" />
<ClInclude Include="Controller.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="AbstractConfiger.cpp" />
<ClCompile Include="AbstractImageAnalyzer.cpp" />
<ClCompile Include="AbstractResource.cpp" />
<ClCompile Include="AbstractTask.cpp" />
<ClCompile Include="AbstractTaskPlugin.cpp" />
<ClCompile Include="AutoRecruitTask.cpp" />
<ClCompile Include="BattleImageAnalyzer.cpp" />
<ClCompile Include="ReplenishOriginiumShardTaskPlugin.cpp" />
<ClCompile Include="RoguelikeBattleTaskPlugin.cpp" />
<ClCompile Include="CreditShopImageAnalyzer.cpp" />
<ClCompile Include="CreditShoppingTask.cpp" />
<ClCompile Include="DronesForShamareTaskPlugin.cpp" />
<ClCompile Include="HashImageAnalyzer.cpp" />
<ClCompile Include="InfrastAbstractTask.cpp" />
<ClCompile Include="InfrastClueImageAnalyzer.cpp" />
<ClCompile Include="InfrastConfiger.cpp" />
<ClCompile Include="InfrastControlTask.cpp" />
<ClCompile Include="InfrastDormTask.cpp" />
<ClCompile Include="InfrastFacilityImageAnalyzer.cpp" />
<ClCompile Include="InfrastInfoTask.cpp" />
<ClCompile Include="InfrastMfgTask.cpp" />
<ClCompile Include="InfrastOfficeTask.cpp" />
<ClCompile Include="InfrastOperImageAnalyzer.cpp" />
<ClCompile Include="InfrastPowerTask.cpp" />
<ClCompile Include="InfrastProductionTask.cpp" />
<ClCompile Include="InfrastClueVacancyImageAnalyzer.cpp" />
<ClCompile Include="InfrastReceptionTask.cpp" />
<ClCompile Include="InfrastSmileyImageAnalyzer.cpp" />
<ClCompile Include="InfrastTradeTask.cpp" />
<ClCompile Include="MultiMatchImageAnalyzer.cpp" />
<ClCompile Include="OcrImageAnalyzer.cpp" />
<ClCompile Include="OcrPack.cpp" />
<ClCompile Include="PenguinPack.cpp" />
<ClCompile Include="RecruitImageAnalyzer.cpp" />
<ClCompile Include="AipOcr.cpp" />
<ClCompile Include="Resource.cpp" />
<ClCompile Include="Assistant.cpp" />
<ClCompile Include="AsstCaller.cpp" />
<ClCompile Include="GeneralConfiger.cpp" />
<ClCompile Include="ItemConfiger.cpp" />
<ClCompile Include="RecruitTask.cpp" />
<ClCompile Include="ProcessTask.cpp" />
<ClCompile Include="ProcessTaskImageAnalyzer.cpp" />
<ClCompile Include="RecruitConfiger.cpp" />
<ClCompile Include="RoguelikeFormationTask.cpp" />
<ClCompile Include="RoguelikeFormationImageAnalyzer.cpp" />
<ClCompile Include="RuntimeStatus.cpp" />
<ClCompile Include="StageDropsTaskPlugin.cpp" />
<ClCompile Include="TaskData.cpp" />
<ClCompile Include="MatchImageAnalyzer.cpp" />
<ClCompile Include="TemplResource.cpp" />
<ClCompile Include="TilePack.cpp" />
<ClCompile Include="UserConfiger.cpp" />
<ClCompile Include="Controller.cpp" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\resource\config.json" />
<None Include="..\..\resource\infrast.json" />
<None Include="..\..\resource\tasks.json" />
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>16.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
<ProjectGuid>{362d1e30-f5ae-4279-9985-65c27b3ba300}</ProjectGuid>
<RootNamespace>MeoAssistant</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<IncludePath>$(SolutionDir)include;$(SolutionDir)3rdparty\include;$(IncludePath)</IncludePath>
<LibraryPath>$(TargetDir);$(SolutionDir)\3rdparty\lib;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">
<LinkIncremental>false</LinkIncremental>
<IncludePath>$(SolutionDir)include;$(SolutionDir)3rdparty\include;$(IncludePath)</IncludePath>
<LibraryPath>$(TargetDir);$(SolutionDir)\3rdparty\lib;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;ASST_DLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
<LanguageStandard_C>stdc11</LanguageStandard_C>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<Optimization>MaxSpeed</Optimization>
<AdditionalOptions>/utf-8 /MP %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>ppocr.lib;opencv_world453.lib;zlibstatic.lib;%(AdditionalDependencies)</AdditionalDependencies>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
<AdditionalLibraryDirectories>
</AdditionalLibraryDirectories>
<Profile>true</Profile>
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>xcopy /e /y /i /c $(SolutionDir)resource $(TargetDir)resource
xcopy /e /y /i /c $(SolutionDir)3rdparty\resource $(TargetDir)resource</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>copy resource</Message>
</PostBuildEvent>
<PreLinkEvent>
<Command>xcopy /e /y /i /c $(SolutionDir)3rdparty\bin $(TargetDir)</Command>
</PreLinkEvent>
<PreLinkEvent>
<Message>copy 3rd party dll</Message>
</PreLinkEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<FunctionLevelLinking>
</FunctionLevelLinking>
<IntrinsicFunctions>false</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;ASST_DLL_EXPORTS;ASST_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
<LanguageStandard_C>stdc11</LanguageStandard_C>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<Optimization>Disabled</Optimization>
<WholeProgramOptimization>true</WholeProgramOptimization>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<AdditionalOptions>/utf-8 /MP %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>ppocr.lib;opencv_world453.lib;zlibstatic.lib;%(AdditionalDependencies)</AdditionalDependencies>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
<AdditionalLibraryDirectories>
</AdditionalLibraryDirectories>
<Profile>true</Profile>
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>xcopy /e /y /i /c $(SolutionDir)resource $(TargetDir)resource
xcopy /e /y /i /c $(SolutionDir)3rdparty\resource $(TargetDir)resource</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>copy resource</Message>
</PostBuildEvent>
<PreLinkEvent>
<Command>xcopy /e /y /i /c $(SolutionDir)3rdparty\bin $(TargetDir)</Command>
</PreLinkEvent>
<PreLinkEvent>
<Message>copy 3rd party dll</Message>
</PreLinkEvent>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<ProjectExtensions>
<VisualStudio>
<UserProperties />
</VisualStudio>
</ProjectExtensions>
</Project>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="RelWithDebInfo|x64">
<Configuration>RelWithDebInfo</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="CICD|x64">
<Configuration>CICD</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\include\AsstCaller.h" />
<ClInclude Include="..\..\include\AsstPort.h" />
<ClInclude Include="AbstractConfiger.h" />
<ClInclude Include="AbstractImageAnalyzer.h" />
<ClInclude Include="AbstractResource.h" />
<ClInclude Include="AbstractTask.h" />
<ClInclude Include="AbstractTaskPlugin.h" />
<ClInclude Include="Assistant.h" />
<ClInclude Include="AsstInfrastDef.h" />
<ClInclude Include="AsstUtils.hpp" />
<ClInclude Include="AsstDef.h" />
<ClInclude Include="AsstMsg.h" />
<ClInclude Include="AutoRecruitTask.h" />
<ClInclude Include="BattleImageAnalyzer.h" />
<ClInclude Include="ReplenishOriginiumShardTaskPlugin.h" />
<ClInclude Include="RoguelikeBattleTaskPlugin.h" />
<ClInclude Include="CreditShopImageAnalyzer.h" />
<ClInclude Include="DronesForShamareTaskPlugin.h" />
<ClInclude Include="GeneralConfiger.h" />
<ClInclude Include="CreditShoppingTask.h" />
<ClInclude Include="HashImageAnalyzer.h" />
<ClInclude Include="InfrastAbstractTask.h" />
<ClInclude Include="InfrastClueImageAnalyzer.h" />
<ClInclude Include="InfrastConfiger.h" />
<ClInclude Include="InfrastControlTask.h" />
<ClInclude Include="InfrastDormTask.h" />
<ClInclude Include="InfrastFacilityImageAnalyzer.h" />
<ClInclude Include="InfrastInfoTask.h" />
<ClInclude Include="InfrastMfgTask.h" />
<ClInclude Include="InfrastOfficeTask.h" />
<ClInclude Include="InfrastOperImageAnalyzer.h" />
<ClInclude Include="InfrastPowerTask.h" />
<ClInclude Include="InfrastProductionTask.h" />
<ClInclude Include="InfrastClueVacancyImageAnalyzer.h" />
<ClInclude Include="InfrastReceptionTask.h" />
<ClInclude Include="InfrastSmileyImageAnalyzer.h" />
<ClInclude Include="InfrastTradeTask.h" />
<ClInclude Include="MultiMatchImageAnalyzer.h" />
<ClInclude Include="OcrImageAnalyzer.h" />
<ClInclude Include="OcrPack.h" />
<ClInclude Include="PenguinPack.h" />
<ClInclude Include="RecruitImageAnalyzer.h" />
<ClInclude Include="AipOcr.h" />
<ClInclude Include="Resource.h" />
<ClInclude Include="ItemConfiger.h" />
<ClInclude Include="Logger.hpp" />
<ClInclude Include="RecruitTask.h" />
<ClInclude Include="ProcessTask.h" />
<ClInclude Include="ProcessTaskImageAnalyzer.h" />
<ClInclude Include="RecruitConfiger.h" />
<ClInclude Include="RoguelikeFormationTaskPlugin.h" />
<ClInclude Include="RoguelikeFormationImageAnalyzer.h" />
<ClInclude Include="RuntimeStatus.h" />
<ClInclude Include="StageDropsTaskPlugin.h" />
<ClInclude Include="TaskData.h" />
<ClInclude Include="MatchImageAnalyzer.h" />
<ClInclude Include="TemplResource.h" />
<ClInclude Include="TilePack.h" />
<ClInclude Include="UserConfiger.h" />
<ClInclude Include="Version.h" />
<ClInclude Include="Controller.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="AbstractConfiger.cpp" />
<ClCompile Include="AbstractImageAnalyzer.cpp" />
<ClCompile Include="AbstractResource.cpp" />
<ClCompile Include="AbstractTask.cpp" />
<ClCompile Include="AbstractTaskPlugin.cpp" />
<ClCompile Include="AutoRecruitTask.cpp" />
<ClCompile Include="BattleImageAnalyzer.cpp" />
<ClCompile Include="ReplenishOriginiumShardTaskPlugin.cpp" />
<ClCompile Include="RoguelikeBattleTaskPlugin.cpp" />
<ClCompile Include="CreditShopImageAnalyzer.cpp" />
<ClCompile Include="CreditShoppingTask.cpp" />
<ClCompile Include="DronesForShamareTaskPlugin.cpp" />
<ClCompile Include="HashImageAnalyzer.cpp" />
<ClCompile Include="InfrastAbstractTask.cpp" />
<ClCompile Include="InfrastClueImageAnalyzer.cpp" />
<ClCompile Include="InfrastConfiger.cpp" />
<ClCompile Include="InfrastControlTask.cpp" />
<ClCompile Include="InfrastDormTask.cpp" />
<ClCompile Include="InfrastFacilityImageAnalyzer.cpp" />
<ClCompile Include="InfrastInfoTask.cpp" />
<ClCompile Include="InfrastMfgTask.cpp" />
<ClCompile Include="InfrastOfficeTask.cpp" />
<ClCompile Include="InfrastOperImageAnalyzer.cpp" />
<ClCompile Include="InfrastPowerTask.cpp" />
<ClCompile Include="InfrastProductionTask.cpp" />
<ClCompile Include="InfrastClueVacancyImageAnalyzer.cpp" />
<ClCompile Include="InfrastReceptionTask.cpp" />
<ClCompile Include="InfrastSmileyImageAnalyzer.cpp" />
<ClCompile Include="InfrastTradeTask.cpp" />
<ClCompile Include="MultiMatchImageAnalyzer.cpp" />
<ClCompile Include="OcrImageAnalyzer.cpp" />
<ClCompile Include="OcrPack.cpp" />
<ClCompile Include="PenguinPack.cpp" />
<ClCompile Include="RecruitImageAnalyzer.cpp" />
<ClCompile Include="AipOcr.cpp" />
<ClCompile Include="Resource.cpp" />
<ClCompile Include="Assistant.cpp" />
<ClCompile Include="AsstCaller.cpp" />
<ClCompile Include="GeneralConfiger.cpp" />
<ClCompile Include="ItemConfiger.cpp" />
<ClCompile Include="RecruitTask.cpp" />
<ClCompile Include="ProcessTask.cpp" />
<ClCompile Include="ProcessTaskImageAnalyzer.cpp" />
<ClCompile Include="RecruitConfiger.cpp" />
<ClCompile Include="RoguelikeFormationTask.cpp" />
<ClCompile Include="RoguelikeFormationImageAnalyzer.cpp" />
<ClCompile Include="RuntimeStatus.cpp" />
<ClCompile Include="StageDropsTaskPlugin.cpp" />
<ClCompile Include="TaskData.cpp" />
<ClCompile Include="MatchImageAnalyzer.cpp" />
<ClCompile Include="TemplResource.cpp" />
<ClCompile Include="TilePack.cpp" />
<ClCompile Include="UserConfiger.cpp" />
<ClCompile Include="Controller.cpp" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\resource\config.json" />
<None Include="..\..\resource\infrast.json" />
<None Include="..\..\resource\tasks.json" />
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>16.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
<ProjectGuid>{362d1e30-f5ae-4279-9985-65c27b3ba300}</ProjectGuid>
<RootNamespace>MeoAssistant</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='CICD|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='CICD|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<IncludePath>$(ProjectDir)..\..\include;$(ProjectDir)..\..\3rdparty\include;$(IncludePath)</IncludePath>
<LibraryPath>$(TargetDir);$(ProjectDir)..\..\3rdparty\lib;$(LibraryPath)</LibraryPath>
<OutDir>$(ProjectDir)..\..\$(Platform)\$(Configuration)\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='CICD|x64'">
<LinkIncremental>false</LinkIncremental>
<IncludePath>$(ProjectDir)..\..\include;$(ProjectDir)..\..\3rdparty\include;$(IncludePath)</IncludePath>
<LibraryPath>$(TargetDir);$(ProjectDir)..\..\3rdparty\lib;$(LibraryPath)</LibraryPath>
<OutDir>$(ProjectDir)..\..\$(Platform)\$(Configuration)\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">
<LinkIncremental>false</LinkIncremental>
<IncludePath>$(ProjectDir)..\..\include;$(ProjectDir)..\..\3rdparty\include;$(IncludePath)</IncludePath>
<LibraryPath>$(TargetDir);$(ProjectDir)..\..\3rdparty\lib;$(LibraryPath)</LibraryPath>
<OutDir>$(ProjectDir)..\..\$(Platform)\$(Configuration)\</OutDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;ASST_DLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
<LanguageStandard_C>stdc11</LanguageStandard_C>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<Optimization>MaxSpeed</Optimization>
<AdditionalOptions>/utf-8 /MP %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>ppocr.lib;opencv_world453.lib;zlibstatic.lib;%(AdditionalDependencies)</AdditionalDependencies>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
<AdditionalLibraryDirectories>
</AdditionalLibraryDirectories>
<Profile>true</Profile>
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
xcopy /e /y /i /c $(ProjectDir)..\..\resource $(TargetDir)resource
xcopy /e /y /i /c $(ProjectDir)..\..\3rdparty\resource $(TargetDir)resource
</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Copy resource</Message>
</PostBuildEvent>
<PreLinkEvent>
<Command>
xcopy /e /y /i /c $(ProjectDir)..\..\3rdparty\bin $(TargetDir)
</Command>
</PreLinkEvent>
<PreLinkEvent>
<Message>Copy 3rd party dll</Message>
</PreLinkEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='CICD|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;ASST_DLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
<LanguageStandard_C>stdc11</LanguageStandard_C>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<Optimization>MaxSpeed</Optimization>
<AdditionalOptions>/utf-8 /MP %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>ppocr.lib;opencv_world453.lib;zlibstatic.lib;%(AdditionalDependencies)</AdditionalDependencies>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
<AdditionalLibraryDirectories>
</AdditionalLibraryDirectories>
<Profile>true</Profile>
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<FunctionLevelLinking>
</FunctionLevelLinking>
<IntrinsicFunctions>false</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;ASST_DLL_EXPORTS;ASST_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
<LanguageStandard_C>stdc11</LanguageStandard_C>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<Optimization>Disabled</Optimization>
<WholeProgramOptimization>true</WholeProgramOptimization>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<AdditionalOptions>/utf-8 /MP %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>ppocr.lib;opencv_world453.lib;zlibstatic.lib;%(AdditionalDependencies)</AdditionalDependencies>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
<AdditionalLibraryDirectories>
</AdditionalLibraryDirectories>
<Profile>true</Profile>
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
<PreBuildEvent>
<Command>
</Command>
</PreBuildEvent>
<PostBuildEvent>
<Command>
xcopy /e /y /i /c $(ProjectDir)..\..\resource $(TargetDir)resource
xcopy /e /y /i /c $(ProjectDir)..\..\3rdparty\resource $(TargetDir)resource
</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Copy resource</Message>
</PostBuildEvent>
<PreLinkEvent>
<Command>
xcopy /e /y /i /c $(ProjectDir)..\..\3rdparty\bin $(TargetDir)
</Command>
</PreLinkEvent>
<PreLinkEvent>
<Message>Copy 3rd party dll</Message>
</PreLinkEvent>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<ProjectExtensions>
<VisualStudio>
<UserProperties />
</VisualStudio>
</ProjectExtensions>
</Project>

View File

@@ -0,0 +1,23 @@
namespace MeoAssistantBuilder;
public static class Constants
{
public const string MaaProjectRootDirectory = "../../";
public const string MaaProjectThirdPartyDirectory = "../../3rdparty";
public const string MaaProjectResourceDirectory = "../../resource";
public const string MaaProjectArtifactDirectory = "../../artifacts";
public const string MaaCoreProjectDirectory = "../MeoAssistant";
public const string MaaWpfProjectDirectory = "../MeoAsstGui";
public const string MaaCoreProjectFilePath = $"{MaaCoreProjectDirectory}/MeoAssistant.vcxproj";
public const string MaaWpfProjectFilePath = $"{MaaWpfProjectDirectory}/MeoAsstGui.csproj";
public const string MaaBuildOutputDirectory = $"{MaaProjectRootDirectory}/x64";
public const string MaaCoreBuildIntermediatOutputDirectory = $"{MaaCoreProjectDirectory}/x64";
public static readonly string[] MaaCoreExtraFiles = new [] { "MeoAssistant.pdb", "MeoAssistant.lib", "MeoAssistant.exp" };
public static readonly string[] MaaWpfExtraFiles = new[] { "MeoAsstGui.pdb", "MeoAsstGui.exe.config" };
}

View File

@@ -0,0 +1,17 @@
using Cake.Common.Tools.MSBuild;
namespace MeoAssistantBuilder.Helper;
public static class BuildCoreHelper
{
public static void BuildCore(this MaaBuildContext context, string configuration)
{
context.MSBuild(Constants.MaaCoreProjectFilePath, new MSBuildSettings
{
WorkingDirectory = Constants.MaaProjectRootDirectory,
ToolPath = context.MsBuildExecutable,
Configuration = configuration,
PlatformTarget = PlatformTarget.x64
});
}
}

View File

@@ -0,0 +1,18 @@
using Cake.Common.Tools.MSBuild;
namespace MeoAssistantBuilder.Helper;
public static class BuildWpfHelper
{
public static void BuildWpf(this MaaBuildContext context, string configuration)
{
context.MSBuild(Constants.MaaWpfProjectFilePath, new MSBuildSettings
{
WorkingDirectory = Constants.MaaProjectRootDirectory,
Restore = true,
ToolPath = context.MsBuildExecutable,
Configuration = configuration,
PlatformTarget = PlatformTarget.x64
});
}
}

View File

@@ -0,0 +1,60 @@
using Cake.Common.Diagnostics;
using Cake.Common.IO;
namespace MeoAssistantBuilder.Helper;
public static class CleanDirectoryHelper
{
public static void CleanArtifacts(this MaaBuildContext context)
{
context.CleanDirectory(Constants.MaaProjectArtifactDirectory);
if (Directory.Exists(Constants.MaaProjectArtifactDirectory))
{
Directory.CreateDirectory(Constants.MaaProjectArtifactDirectory);
}
}
public static void CleanCore(this MaaBuildContext context)
{
context.CleanDirectory(Constants.MaaBuildOutputDirectory);
context.CleanDirectory(Constants.MaaCoreBuildIntermediatOutputDirectory);
}
public static void CleanWpf(this MaaBuildContext context)
{
context.CleanDirectory(Constants.MaaBuildOutputDirectory);
context.CleanDirectory(Path.Combine(Constants.MaaWpfProjectDirectory, "bin"));
context.CleanDirectory(Path.Combine(Constants.MaaWpfProjectDirectory, "obj"));
}
public static void CleanAll(this MaaBuildContext context)
{
CleanCore(context);
CleanWpf(context);
}
public static void RemoveExtraCore(this MaaBuildContext context, string buildOutput)
{
foreach (var extra in Constants.MaaCoreExtraFiles)
{
var file = Path.Combine(buildOutput, extra);
if (File.Exists(file))
{
File.Delete(file);
context.Information($"Delete file: {file}");
}
}
}
public static void RemoveExtraWpf(this MaaBuildContext context, string buildOutput)
{
foreach (var extra in Constants.MaaWpfExtraFiles)
{
var file = Path.Combine(buildOutput, extra);
if (File.Exists(file))
{
File.Delete(file);
context.Information($"Delete file: {file}");
}
}
}
}

View File

@@ -0,0 +1,53 @@
using Cake.Common.Diagnostics;
using Cake.Common.IO;
namespace MeoAssistantBuilder.Helper
{
public static class FileCopyHelper
{
public static void CopyThirdPartyDlls(this MaaBuildContext context, string outputDir)
{
var thirdPartyDlls = Directory.GetFiles(Path.Combine(Constants.MaaProjectThirdPartyDirectory, "bin"));
foreach (var f in thirdPartyDlls)
{
var fileName = new FileInfo(f).Name;
context.CopyFile(f, Path.Combine(outputDir, fileName));
context.Information($"Copy file: FROM {f} to {Path.Combine(outputDir, fileName)}");
}
}
public static void CopyResources(this MaaBuildContext context, string outputDir)
{
var resourceTargetDir = Path.Combine(outputDir, "resource");
var resourceThirdParty = Path.Combine(Constants.MaaProjectRootDirectory, "3rdparty\\resource");
var resoutceMaa = Path.Combine(Constants.MaaProjectRootDirectory, "resource");
var files = new List<string>();
var directories = new List<string>();
files.AddRange(Directory.GetFiles(resourceThirdParty));
files.AddRange(Directory.GetFiles(resoutceMaa));
directories.AddRange(Directory.GetDirectories(resourceThirdParty));
directories.AddRange(Directory.GetDirectories(resoutceMaa));
if (Directory.Exists(resourceTargetDir) is false)
{
Directory.CreateDirectory(resourceTargetDir);
}
foreach (var f in files)
{
var fileName = new FileInfo(f).Name;
context.CopyFile(f, Path.Combine(resourceTargetDir, fileName));
context.Information($"Copy file: FROM {f} TO {Path.Combine(resourceTargetDir, fileName)}");
}
foreach (var d in directories)
{
var dirName = new DirectoryInfo(d).Name;
context.CopyDirectory(d, Path.Combine(resourceTargetDir, dirName));
context.Information($"Copy directory: FROM {d} TO {Path.Combine(resourceTargetDir, dirName)}");
}
}
}
}

View File

@@ -0,0 +1,38 @@
using Cake.Common.Build;
using Cake.Common.Diagnostics;
namespace MeoAssistantBuilder.Helper;
public static class GetBuildInformationHelper
{
public static (string, string) GetBuildInformation(this MaaBuildContext context)
{
var ghAction = context.GitHubActions();
var buildTime = DateTime.UtcNow.AddHours(8);
var bt = buildTime.ToString("yyyy-MM-dd-HH-mm-ss");
string hash;
if (ghAction.IsRunningOnGitHubActions)
{
hash = ghAction.Environment.Workflow.Sha.ToLower()[..7];
}
else
{
try
{
var realPath = new DirectoryInfo(Constants.MaaProjectRootDirectory).FullName;
var repo = new LibGit2Sharp.Repository(realPath);
var commit = repo.Commits.First();
hash = commit.Sha.ToLower()[..7];
}
catch (Exception e)
{
context.Warning($"Failed to get git log: {e.Message}");
hash = "Unknown";
}
}
return (bt, hash);
}
}

View File

@@ -0,0 +1,28 @@
using Cake.Common;
using Cake.Common.Tools.VSWhere;
using Cake.Core;
using Cake.Core.Diagnostics;
using Cake.Frosting;
namespace MeoAssistantBuilder;
public class MaaBuildContext : FrostingContext
{
public string MsBuildExecutable { get; set; }
public MaaBuildContext(ICakeContext context) : base(context)
{
MsBuildExecutable = context.Argument<string>("tool", "");
if (MsBuildExecutable == "")
{
var vsPath = context.VSWhereLatest();
if (vsPath == null)
{
context.Log.Write(Verbosity.Normal, LogLevel.Fatal, "Can not find Visual Studio install path");
System.Environment.Exit(-1);
}
MsBuildExecutable = Path.Combine(vsPath.FullPath, "Msbuild\\Current\\Bin\\MsBuild.exe");
}
context.Log.Information($"Use MsBuild at: {MsBuildExecutable}");
}
}

View File

@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>disable</Nullable>
<Platforms>x64</Platforms>
<Configurations>Debug;Release;CICD</Configurations>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Cake.Frosting" Version="2.2.0" />
<PackageReference Include="LibGit2Sharp" Version="0.27.0-preview-0102" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,15 @@
using Cake.Frosting;
using MeoAssistantBuilder;
var sArgs = new List<string>();
foreach (var arg in args)
{
var sa = arg.Split(" ")
.ToList();
sa.RemoveAll(x => string.IsNullOrEmpty(x) || string.IsNullOrWhiteSpace(x));
sArgs.AddRange(sa);
}
return new CakeHost()
.UseContext<MaaBuildContext>()
.Run(sArgs);

View File

@@ -0,0 +1,23 @@
# MeoAssistantBuilder
MAA 构建项目
## 构建 MAA
需要安装
- `.NET SDK 6.0`
- `.NET Framework SDK 4.8`
- `MSVC v143 x64`
- `MSBuild (VS2022)`
在本项目根目录执行
```
dotnet run -- --target <TARGET>
```
TARGET 可选项
- `DevBuild`
- `ReleaseCore`
- `ReleaseWpf`
- `ReleaseResource`

View File

@@ -0,0 +1,61 @@
using Cake.Common.Build;
using Cake.Common.Diagnostics;
using Cake.Frosting;
using MeoAssistantBuilder.Helper;
using System.IO.Compression;
namespace MeoAssistantBuilder.Tasks;
[TaskName("DevBuild")]
public sealed class DevBuildTask : FrostingTask<MaaBuildContext>
{
public override void Run(MaaBuildContext context)
{
context.Information("--------------------------------------------------");
context.Information("1. Get build information");
context.Information("--------------------------------------------------");
context.CleanArtifacts();
var (bt, hash) = context.GetBuildInformation();
var artifact = $"MaaBundle-DevBuild-(CONF)-{hash}-{bt}.zip";
context.Information($"Dev build of commit {hash} at {bt}");
context.Information("--------------------------------------------------");
context.Information("2. Build MaaBundle with configuration Release");
context.Information("--------------------------------------------------");
context.CleanAll();
context.BuildCore("Release");
context.BuildWpf("Release");
var releaseOutput = Path.Combine(Constants.MaaBuildOutputDirectory, "Release");
var releaseArtifact = Path.Combine(Constants.MaaProjectArtifactDirectory, artifact.Replace("(CONF)", "Release"));
ZipFile.CreateFromDirectory(releaseOutput, releaseArtifact);
context.Information("--------------------------------------------------");
context.Information("3. Build MaaBundle with configuration RelWithDebInfo");
context.Information("--------------------------------------------------");
context.CleanAll();
context.BuildCore("RelWithDebInfo");
context.BuildWpf("RelWithDebInfo");
var releaseDebugOutput = Path.Combine(Constants.MaaBuildOutputDirectory, "RelWithDebInfo");
var releaseDebugArtifact = Path.Combine(Constants.MaaProjectArtifactDirectory, artifact.Replace("(CONF)", "RelWithDebInfo"));
ZipFile.CreateFromDirectory(releaseDebugOutput, releaseDebugArtifact);
context.Information("--------------------------------------------------");
context.Information("4. Build MaaBundle with configuration CICD");
context.Information("--------------------------------------------------");
context.CleanAll();
context.BuildCore("CICD");
context.BuildWpf("CICD");
var releaseCiOutput = Path.Combine(Constants.MaaBuildOutputDirectory, "CICD");
var releaseCiArtifact = Path.Combine(Constants.MaaProjectArtifactDirectory, artifact.Replace("(CONF)", "CICD"));
context.CopyThirdPartyDlls(releaseCiOutput);
context.CopyResources(releaseCiOutput);
ZipFile.CreateFromDirectory(releaseCiOutput, releaseCiArtifact);
}
}

View File

@@ -0,0 +1,88 @@
using Cake.Common.Build;
using Cake.Common.Diagnostics;
using Cake.Frosting;
using MeoAssistantBuilder.Helper;
using System.IO.Compression;
using System.Text.RegularExpressions;
namespace MeoAssistantBuilder.Tasks;
[TaskName("ReleaseBundle")]
public sealed class ReleaseBundleTask : FrostingTask<MaaBuildContext>
{
public override void Run(MaaBuildContext context)
{
context.Information("--------------------------------------------------");
context.Information("1. Read MaaCore version string");
context.Information("--------------------------------------------------");
var version = "UNKNOWN";
var versionFile = Path.Combine(Constants.MaaCoreProjectDirectory, "Version.h");
var versionFileContent = File.ReadAllText(versionFile);
var regex = @"v((0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)";
var match = Regex.Match(versionFileContent, regex);
if (match.Success is false)
{
context.Warning("Can not read version");
Environment.Exit(-1);
}
else
{
version = match.Value;
}
var ghActions = context.GitHubActions();
if (ghActions.IsRunningOnGitHubActions is false)
{
version += "-Local";
}
else
{
context.Information($"Running in GitHub Action with workflow name: {ghActions.Environment.Workflow.Workflow}, ref: {ghActions.Environment.Workflow.Ref}");
if (ghActions.Environment.Workflow.Workflow != "Release MaaCore")
{
version += $"-{ghActions.Environment.Workflow.RunId}";
}
else
{
var tag = ghActions.Environment.Workflow.Ref.Replace("refs/tags/", "");
if (tag != version)
{
context.Error($"Version do not match. From File: {version}. From Ref: {tag}");
Environment.Exit(-1);
}
}
}
context.Information($"MaaCore Version: {version}");
context.Information("--------------------------------------------------");
context.Information("2. Release MaaCore with third party dlls and resource");
context.Information("--------------------------------------------------");
var buildOutput = Path.Combine(Constants.MaaBuildOutputDirectory, "Release");
context.CleanAll();
context.CleanArtifacts();
context.BuildCore("Release");
context.RemoveExtraCore(buildOutput);
context.Information("--------------------------------------------------");
context.Information("3. Release MaaWpf with third party executables");
context.Information("--------------------------------------------------");
context.BuildWpf("Release");
context.RemoveExtraWpf(buildOutput);
context.Information("--------------------------------------------------");
context.Information("4. Bundle MaaBundle package");
context.Information("--------------------------------------------------");
var bundle = Path.Combine(Constants.MaaProjectArtifactDirectory, $"MaaBundle-{version}.zip");
ZipFile.CreateFromDirectory(buildOutput, bundle);
context.Information($"Bundled MaaBundle file: {bundle}");
}
}

View File

@@ -0,0 +1,97 @@
using Cake.Common.Build;
using Cake.Common.Diagnostics;
using Cake.Frosting;
using MeoAssistantBuilder.Helper;
using System.IO.Compression;
using System.Text.RegularExpressions;
namespace MeoAssistantBuilder.Tasks;
[TaskName("ReleaseCore")]
public sealed class ReleaseCoreTask : FrostingTask<MaaBuildContext>
{
public override void Run(MaaBuildContext context)
{
context.Information("--------------------------------------------------");
context.Information("1. Read MaaCore version string");
context.Information("--------------------------------------------------");
var version = "UNKNOWN";
var versionFile = Path.Combine(Constants.MaaCoreProjectDirectory, "Version.h");
var versionFileContent = File.ReadAllText(versionFile);
var regex = @"v((0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)";
var match = Regex.Match(versionFileContent, regex);
if (match.Success is false)
{
context.Warning("Can not read version");
Environment.Exit(-1);
}
else
{
version = match.Value;
}
var ghActions = context.GitHubActions();
if (ghActions.IsRunningOnGitHubActions is false)
{
version += "-Local";
}
else
{
context.Information($"Running in GitHub Action with workflow name: {ghActions.Environment.Workflow.Workflow}, ref: {ghActions.Environment.Workflow.Ref}");
if (ghActions.Environment.Workflow.Workflow != "Release MaaCore")
{
version += $"-{ghActions.Environment.Workflow.RunId}";
}
else
{
var tag = ghActions.Environment.Workflow.Ref.Replace("refs/tags/", "");
if (tag != version)
{
context.Error($"Version do not match. From File: {version}. From Ref: {tag}");
Environment.Exit(-1);
}
}
}
context.Information($"MaaCore Version: {version}");
context.Information("--------------------------------------------------");
context.Information("2. Build MaaCore with CICD configuration");
context.Information("--------------------------------------------------");
context.CleanCore();
context.CleanArtifacts();
context.BuildCore("CICD");
context.Information("--------------------------------------------------");
context.Information("3. Remove extra files from build output");
context.Information("--------------------------------------------------");
var buildOutput = Path.Combine(Constants.MaaBuildOutputDirectory, "CICD");
context.RemoveExtraCore(buildOutput);
context.Information("--------------------------------------------------");
context.Information("4. Copy 3rd party library DLLs to output directory");
context.Information("--------------------------------------------------");
var thirdPartyDlls = Directory.GetFiles(Path.Combine(Constants.MaaProjectThirdPartyDirectory, "bin"));
foreach(var f in thirdPartyDlls)
{
var fileName = new FileInfo(f).Name;
File.Copy(f, Path.Combine(buildOutput, fileName));
context.Information($"Copy file: FROM {f} to {Path.Combine(buildOutput, fileName)}");
}
context.Information("--------------------------------------------------");
context.Information("5. Bundle MaaCore DLLs");
context.Information("--------------------------------------------------");
var bundle = Path.Combine(Constants.MaaProjectArtifactDirectory, $"MaaCore-{version}.zip");
ZipFile.CreateFromDirectory(buildOutput, bundle);
context.Information($"Bundled MAACore DLLs file: {bundle}");
}
}

View File

@@ -0,0 +1,43 @@
using Cake.Common.Build;
using Cake.Common.Diagnostics;
using Cake.Frosting;
using MeoAssistantBuilder.Helper;
using System.IO.Compression;
namespace MeoAssistantBuilder.Tasks;
[TaskName("ReleaseResource")]
public sealed class ReleaseResourceTask : FrostingTask<MaaBuildContext>
{
public override void Run(MaaBuildContext context)
{
context.Information("--------------------------------------------------");
context.Information("1. Get bundle information");
context.Information("--------------------------------------------------");
var (hash, bt) = context.GetBuildInformation();
context.CleanArtifacts();
var version = $"{hash}-{bt}";
context.Information($"MaaResource Version: {version}");
context.Information("--------------------------------------------------");
context.Information("2. Copy MaaResource");
context.Information("--------------------------------------------------");
var resDir = Path.Combine(Constants.MaaBuildOutputDirectory, "resource");
if (Directory.Exists(resDir) is false)
{
Directory.CreateDirectory(resDir);
}
context.CopyResources(resDir);
context.Information("--------------------------------------------------");
context.Information("3. Bundle MaaResource");
context.Information("--------------------------------------------------");
var bundle = Path.Combine(Constants.MaaProjectArtifactDirectory, $"MaaResource-{version}.zip");
ZipFile.CreateFromDirectory(resDir, bundle);
context.Information($"Bundled MaaResource file: {bundle}");
}
}

View File

@@ -0,0 +1,46 @@
using Cake.Common.Build;
using Cake.Common.Diagnostics;
using Cake.Frosting;
using MeoAssistantBuilder.Helper;
using System.IO.Compression;
namespace MeoAssistantBuilder.Tasks;
[TaskName("ReleaseWpf")]
public sealed class ReleaseWpfTask : FrostingTask<MaaBuildContext>
{
public override void Run(MaaBuildContext context)
{
context.Information("--------------------------------------------------");
context.Information("1. Build MaaWpf with ReleaseCore configuration");
context.Information("--------------------------------------------------");
var (hash, bt) = context.GetBuildInformation();
context.CleanWpf();
context.CleanArtifacts();
context.BuildWpf("CICD");
context.Information("--------------------------------------------------");
context.Information("2. Remove extra files from build output");
context.Information("--------------------------------------------------");
var buildOutput = Path.Combine(Constants.MaaBuildOutputDirectory, "CICD");
context.RemoveExtraWpf(buildOutput);
context.Information("--------------------------------------------------");
context.Information("3. Set MaaWpf Version Number");
context.Information("--------------------------------------------------");
var version = $"{hash}-{bt}";
context.Information($"MaaWpf Version: {version}");
context.Information("--------------------------------------------------");
context.Information("4. Bundle MaaWpf Executables");
context.Information("--------------------------------------------------");
var bundle = Path.Combine(Constants.MaaProjectArtifactDirectory, $"MaaWpf-{version}.zip");
ZipFile.CreateFromDirectory(buildOutput, bundle);
context.Information($"Bundled MaaWpf Executables file: {bundle}");
}
}

View File

@@ -38,23 +38,25 @@
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>x64</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\x64\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<RunPostBuildEvent>Always</RunPostBuildEvent>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>newlogo.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'RelWithDebInfo|AnyCPU'">
<PropertyGroup>
<StartupObject>MeoAsstGui.App</StartupObject>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>..\..\x64\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'RelWithDebInfo|x64'">
<OutputPath>..\..\x64\RelWithDebInfo\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<Optimize>false</Optimize>
@@ -63,28 +65,20 @@
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup>
<StartupObject>MeoAsstGui.App</StartupObject>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'CICD|x64'">
<OutputPath>..\..\x64\CICD\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Costura, Version=5.6.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\packages\Costura.Fody.5.6.0\lib\netstandard1.0\Costura.dll</HintPath>
</Reference>
<Reference Include="GongSolutions.WPF.DragDrop, Version=2.0.0.0, Culture=neutral, PublicKeyToken=91f1945125b7a587, processorArchitecture=MSIL">
<HintPath>..\..\packages\gong-wpf-dragdrop.2.4.1\lib\net47\GongSolutions.WPF.DragDrop.dll</HintPath>
</Reference>
<Reference Include="HandyControl, Version=3.2.0.0, Culture=neutral, PublicKeyToken=45be8712787a1e5b, processorArchitecture=MSIL">
<HintPath>..\..\packages\HandyControl.3.2.0\lib\net472\HandyControl.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Win32.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\..\packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="Stylet, Version=1.3.6.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\packages\Stylet.1.3.6\lib\net45\Stylet.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Data" />
@@ -225,26 +219,7 @@
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<None Include=".editorconfig" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
@@ -252,7 +227,7 @@
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.7.2 %28x86 x64%29</ProductName>
<ProductName>Microsoft .NET Framework 4.7.2 %28x86 and x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
@@ -271,13 +246,13 @@
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="gong-wpf-dragdrop">
<Version>2.4.3</Version>
<Version>3.1.1</Version>
</PackageReference>
<PackageReference Include="HandyControl">
<Version>3.3.0</Version>
</PackageReference>
<PackageReference Include="Microsoft.NETCore.Platforms">
<Version>5.0.4</Version>
<Version>6.0.3</Version>
</PackageReference>
<PackageReference Include="Microsoft.Win32.Primitives">
<Version>4.3.0</Version>
@@ -289,7 +264,7 @@
<Version>13.0.1</Version>
</PackageReference>
<PackageReference Include="Notification.Wpf">
<Version>6.1.0.1</Version>
<Version>6.1.0.5</Version>
</PackageReference>
<PackageReference Include="Stylet">
<Version>1.3.6</Version>
@@ -310,7 +285,7 @@
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Diagnostics.DiagnosticSource">
<Version>5.0.1</Version>
<Version>6.0.0</Version>
</PackageReference>
<PackageReference Include="System.Diagnostics.Tools">
<Version>4.3.0</Version>
@@ -417,6 +392,6 @@
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>xcopy /e /y /i /c $(SolutionDir)resource $(TargetDir)resource</PostBuildEvent>
<PostBuildEvent>xcopy /e /y /i /c $(ProjectDir)..\..\3rdparty\tools $(TargetDir)</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@@ -1,72 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace MeoAsstGui.Properties
{
using System;
/// <summary>
/// 一个强类型的资源类,用于查找本地化的字符串等。
/// </summary>
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// 返回此类使用的缓存的 ResourceManager 实例。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if (object.ReferenceEquals(resourceMan, null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MeoAsstGui.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// 重写当前线程的 CurrentUICulture 属性,对
/// 使用此强类型资源类的所有资源查找执行重写。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}

View File

@@ -1,117 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -1,30 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace MeoAsstGui.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}

View File

@@ -1,7 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>