Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UltralightNet 1.3 #73

Merged
merged 64 commits into from
Aug 7, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
f029778
Update LibraryImportGenerator
SupinePandora43 Jul 15, 2023
a7d0e80
Update AppCore to use new LibraryImportGenerator
SupinePandora43 Jul 15, 2023
8e48efe
Add missing attributes
SupinePandora43 Jul 16, 2023
3c6be76
Add LibraryImports.g.cs to AppCore
SupinePandora43 Jul 16, 2023
3cb5a48
Add GamepadEvents definitions
SupinePandora43 Jul 14, 2023
dfe1395
Update bins
SupinePandora43 Jul 15, 2023
4cc20ce
Implement gamepad handling
SupinePandora43 Jul 16, 2023
f787a70
Optimize global usings
SupinePandora43 Jul 16, 2023
59f8ec7
Fix memory leak in startup
SupinePandora43 Jul 16, 2023
d92a8c9
Make NativeContainer a class
SupinePandora43 Jul 18, 2023
581775d
Update libAppCore.so
SupinePandora43 Jul 18, 2023
aa6b2d8
Update to latest Ultralight
SupinePandora43 Jul 22, 2023
e698e0d
fix ci
SupinePandora43 Jul 22, 2023
1d6e6a4
fix ci
SupinePandora43 Jul 22, 2023
f428033
fix ci
SupinePandora43 Jul 22, 2023
54a00c0
fix ci
SupinePandora43 Jul 22, 2023
cd6daef
Make it compile
SupinePandora43 Jul 22, 2023
80e250b
fix ci
SupinePandora43 Jul 22, 2023
4a14430
Remove unnecessary nuget package sources
SupinePandora43 Jul 22, 2023
fd8dfdc
fix ci
SupinePandora43 Jul 22, 2023
25d141d
fix ci
SupinePandora43 Jul 22, 2023
a98843e
fix ci
SupinePandora43 Jul 22, 2023
af7f5aa
Refactoring
SupinePandora43 Jul 22, 2023
7064ca5
Fix tests
SupinePandora43 Jul 22, 2023
8f902cb
Do not dispose default session
SupinePandora43 Jul 22, 2023
264dbcd
update ver
SupinePandora43 Jul 22, 2023
f8c44b5
pack UltralightNet.Resources
SupinePandora43 Jul 22, 2023
e607068
Assert main thread on macos
SupinePandora43 Jul 22, 2023
1d81492
Update Windows and Mac binaries
SupinePandora43 Jul 25, 2023
b53c101
delete UltralightNet.Resources
SupinePandora43 Jul 26, 2023
e7778d2
C# Wrappers for platform structs (interfaces yay)
SupinePandora43 Jul 29, 2023
78d83ce
fix ci
SupinePandora43 Jul 29, 2023
768fd15
fix ci
SupinePandora43 Jul 29, 2023
fe6aa7a
Re-enable preloading
SupinePandora43 Jul 29, 2023
a292887
Delete unsafe test
SupinePandora43 Jul 29, 2023
4ddf7fc
Test results
SupinePandora43 Jul 29, 2023
a66b9bf
Run regular tests first
SupinePandora43 Jul 29, 2023
aef3574
Fix windows tests
SupinePandora43 Jul 29, 2023
f35d55a
try to fix mac ci
SupinePandora43 Jul 29, 2023
fd646e0
fix windows ci
SupinePandora43 Jul 30, 2023
2484707
Split versioning
SupinePandora43 Jul 30, 2023
dc005a7
Disable parallel testing
SupinePandora43 Jul 30, 2023
13105fe
move tree
SupinePandora43 Jul 30, 2023
d548aae
Upload dev builds in Build job
SupinePandora43 Jul 30, 2023
fd7666f
fix ci
SupinePandora43 Jul 30, 2023
2307f29
fix ci
SupinePandora43 Jul 30, 2023
fe1ce28
fix ci
SupinePandora43 Jul 30, 2023
c9d1105
fix ci
SupinePandora43 Jul 30, 2023
a1ca692
fix ci
SupinePandora43 Jul 30, 2023
0efef2f
fix windows ci
SupinePandora43 Jul 30, 2023
ec19e60
Fix ULBuffer generic size
SupinePandora43 Jul 30, 2023
2826add
disable macos tests
SupinePandora43 Jul 30, 2023
7e113f4
Crash test
SupinePandora43 Jul 30, 2023
57eeb6c
Revert "Crash test"
SupinePandora43 Jul 30, 2023
c5ab556
Cleanup the solution
SupinePandora43 Jul 30, 2023
ccac569
Remove unnecessary resources
SupinePandora43 Jul 30, 2023
a796a7c
Make View a NativeContainer, begin work on callbacks
SupinePandora43 Aug 5, 2023
5fc1005
Finish callback implementation
SupinePandora43 Aug 5, 2023
38577b2
Fix gpudriver check in platform
SupinePandora43 Aug 6, 2023
73d5c7e
Fix net6.0 errors
SupinePandora43 Aug 6, 2023
62f86df
Update projects
SupinePandora43 Aug 6, 2023
3023df9
Update appcore impl
SupinePandora43 Aug 6, 2023
4bcab5c
FontFile slight rewrite
SupinePandora43 Aug 6, 2023
3a7ffd2
internalize interop structs
SupinePandora43 Aug 7, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
DOTNET_ROLL_FORWARD=LatestMajor
DOTNET_TieredPGO=1
DOTNET_ReadyToRun=0
DOTNET_TC_QuickJitForLoops=1
147 changes: 68 additions & 79 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,91 +17,74 @@ jobs:
# needs: BuildCmake
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup .NET
uses: actions/setup-dotnet@v1
- uses: actions/checkout@v3
- uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.0.x
- name: Build packages
dotnet-version: 7.x
- name: Pack bins
run: |
dotnet pack src/UltralightNet.Binaries -c Release
dotnet pack src/UltralightNet.Resources -c Release
dotnet pack src/UltralightNet -c Release
dotnet pack src/UltralightNet.AppCore.Binaries -c Release
dotnet pack src/UltralightNet.AppCore -c Release
- run: tree
- name: Upload nuget packages artifacts
uses: actions/upload-artifact@v3
with:
name: nugets
path: |
UltralightNet.*.nupkg
UltralightNet.*.snupkg
retention-days: 30
if-no-files-found: error
DevBuilds:
needs: Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
dotnet-version: 6.0.x
- name: Add Github Packages to NuGet sources
run: dotnet nuget add source --username ${{ github.actor }} --password ${{ github.token }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"
- name: Define a version suffix
run: echo "version_suffix=dev-$(date -u +%Y%m%d%H%M%S)-$(git rev-parse --short ${{ github.sha }})" >> $GITHUB_ENV
- name: Pack
chmod +x ./packbinaries.sh
./packbinaries.sh -p:RepositoryBranch=${{ github.ref_name }} -p:RepositoryCommit=${{ github.sha }}
- name: Build
run: |
chmod +x ./regenerate.sh
./regenerate.sh
- name: Build compat
run: |
dotnet build src/UltralightNet -c Release
dotnet build src/UltralightNet.AppCore -c Release
- name: Upload to github packages
run: |
dotnet pack src/UltralightNet.Binaries -c Release --version-suffix ${{ env.version_suffix }} -p:RepositoryBranch=${{ github.ref_name }} -p:RepositoryCommit=${{ github.sha }}
dotnet pack src/UltralightNet.Resources -c Release --version-suffix ${{ env.version_suffix }} -p:RepositoryBranch=${{ github.ref_name }} -p:RepositoryCommit=${{ github.sha }}
dotnet pack src/UltralightNet -c Release --version-suffix ${{ env.version_suffix }} -p:RepositoryBranch=${{ github.ref_name }} -p:RepositoryCommit=${{ github.sha }}
dotnet pack src/UltralightNet.AppCore.Binaries -c Release --version-suffix ${{ env.version_suffix }} -p:RepositoryBranch=${{ github.ref_name }} -p:RepositoryCommit=${{ github.sha }}
dotnet pack src/UltralightNet.AppCore -c Release --version-suffix ${{ env.version_suffix }} -p:RepositoryBranch=${{ github.ref_name }} -p:RepositoryCommit=${{ github.sha }}
- name: Publish
run: dotnet nuget push *.nupkg --api-key ${{ github.token }} --source github
dotnet nuget add source --username ${{ github.actor }} --password ${{ github.token }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"
version_suffix=dev-$(date -u +%Y%m%d%H%M%S)-$(git rev-parse --short ${{ github.sha }})
dotnet pack src/UltralightNet -c Release --version-suffix $version_suffix -p:RepositoryBranch=${{ github.ref_name }} -p:RepositoryCommit=${{ github.sha }}
dotnet pack src/UltralightNet.AppCore -c Release --version-suffix $version_suffix -p:RepositoryBranch=${{ github.ref_name }} -p:RepositoryCommit=${{ github.sha }}
dotnet nuget push *.nupkg --api-key ${{ github.token }} --source github --skip-duplicate
dotnet nuget push *.snupkg --api-key ${{ github.token }} --source github --skip-duplicate
Test:
needs: Build
runs-on: ${{ matrix.os }}-latest
strategy:
fail-fast: false
matrix:
os : ['windows', 'ubuntu', 'macos']
os : ['windows', 'ubuntu'] # 'macos'
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup .NET
uses: actions/setup-dotnet@v1
- uses: actions/checkout@v3
- uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.0.100
- name: Install missing libraries
run: | # missing libraries workaround
sudo add-apt-repository ppa:linuxuprising/libpng12
sudo apt update
sudo apt install libpng12-0 libpulse0 libxv1
find /usr/lib -name "libffi.so*"
sudo ln -s /usr/lib/x86_64-linux-gnu/libffi.so.7.1.0 /usr/lib/x86_64-linux-gnu/libffi.so.6
if: matrix.os=='ubuntu'
- name: Download packages
uses: actions/download-artifact@v3
with:
name: nugets
path: ./
- run: tree
if: matrix.os=='ubuntu'
- name: Test
if: matrix.os!='macos'
run: dotnet test src/UltralightNet.Test/UltralightNet.Test.csproj --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=cobertura,opencover -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.UseSourceLink=true
- name: Test (macos)
if: matrix.os=='macos'
dotnet-version: 7.x
#- name: Install missing libraries
# run: | # missing libraries workaround
# sudo add-apt-repository ppa:linuxuprising/libpng12
# sudo apt update
# sudo apt install libpng12-0 libpulse0 libxv1
# find /usr/lib -name "libffi.so*"
# sudo ln -s /usr/lib/x86_64-linux-gnu/libffi.so.7.1.0 /usr/lib/x86_64-linux-gnu/libffi.so.6
# if: matrix.os=='ubuntu'
- name: Pack bins
shell: bash
run: |
chmod +x ./packbinaries.sh
./packbinaries.sh -p:RepositoryBranch=${{ github.ref_name }} -p:RepositoryCommit=${{ github.sha }}
- name: Build
shell: bash
run: |
chmod +x ./regenerate.sh
./regenerate.sh
- name: Build compat
run: |
dotnet test src/UltralightNet.Test/UltralightNet.Test.csproj --filter Category!=Renderer --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=cobertura,opencover -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.UseSourceLink=true
dotnet tool install --global coverlet.console
dotnet build -c Release src/UltralightNet.TestRunner/UltralightNet.TestRunner.csproj
coverlet src/UltralightNet.TestRunner/bin/Release/net6.0/UltralightNet.TestRunner.dll --target "dotnet" --targetargs "src/UltralightNet.TestRunner/bin/Release/net6.0/UltralightNet.TestRunner.dll" --format cobertura --format opencover
dotnet build src/UltralightNet -c Release
dotnet build src/UltralightNet.AppCore -c Release
- name: Test
run: dotnet test src/UltralightNet.Test/UltralightNet.Test.csproj --logger "trx;LogFileName=TestResult.trx" --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=cobertura,opencover -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.UseSourceLink=true -- ParallelizeTestCollections=false
- name: Read test results
if: always()
run: cat src/UltralightNet.Test/TestResults/TestResult.trx
- name: Test (Stress)
run: dotnet test src/UltralightNet.Test/UltralightNet.Test.csproj -e DOTNET_GCStress=0xC --logger "trx;LogFileName=TestResult.trx" --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=cobertura,opencover -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.UseSourceLink=true -- ParallelizeTestCollections=false
- name: Read test results
if: always()
run: cat src/UltralightNet.Test/TestResults/TestResult.trx
- name: Upload coverage
uses: codecov/codecov-action@v3
with:
Expand All @@ -117,20 +100,26 @@ jobs:
runs-on: ubuntu-latest
if: github.ref_name == 'master'
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v1
uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.0.100
dotnet-version: 7.x
- name: Pack bins
run: |
chmod +x ./packbinaries.sh
./packbinaries.sh -p:RepositoryBranch=${{ github.ref_name }} -p:RepositoryCommit=${{ github.sha }}
- name: Build
run: |
chmod +x ./regenerate.sh
./regenerate.sh
- name: Pack
run: |
dotnet pack src/UltralightNet.Binaries -c Release -p:RepositoryBranch=${{ github.ref_name }} -p:RepositoryCommit=${{ github.sha }}
dotnet pack src/UltralightNet.Resources -c Release -p:RepositoryBranch=${{ github.ref_name }} -p:RepositoryCommit=${{ github.sha }}
dotnet pack src/UltralightNet -c Release -p:RepositoryBranch=${{ github.ref_name }} -p:RepositoryCommit=${{ github.sha }}
dotnet pack src/UltralightNet.AppCore.Binaries -c Release -p:RepositoryBranch=${{ github.ref_name }} -p:RepositoryCommit=${{ github.sha }}
dotnet pack src/UltralightNet.AppCore -c Release -p:RepositoryBranch=${{ github.ref_name }} -p:RepositoryCommit=${{ github.sha }}
- run: tree
- name: Publish
run: |
dotnet nuget push *.nupkg -k ${{ secrets.NUGET_TOKEN }} --source https://api.nuget.org/v3/index.json --skip-duplicate
dotnet nuget push *.snupkg -k ${{ secrets.NUGET_TOKEN }} --source https://api.nuget.org/v3/index.json --skip-duplicate
# continue-on-error: true
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
*.pdb
*.pidb
*.psess
*.resources
*.sln.docstates
*.suo
*.svclog
Expand Down Expand Up @@ -67,3 +66,4 @@ TestResult.xml
*.spv
gpu/shaders/compiled
BenchmarkDotNet.Artifacts
**/**.g.cs
17 changes: 6 additions & 11 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,7 @@
"cwd": "${workspaceFolder}/Examples/gpu/UltralightNet.OpenGL.TestApp/bin/Debug/net6.0",
"console": "internalConsole",
"stopAtEntry": false,
"env": {
"DISPLAY": ":0.0",
"DOTNET_TieredPGO": "1",
"DOTNET_ReadyToRun": "0",
"DOTNET_TC_QuickJitForLoops": "1"
}
"envFile": "${workspaceFolder}/.env"
},
{
"name": "Vulkan TestApp",
Expand All @@ -30,7 +25,8 @@
"args": [],
"cwd": "${workspaceFolder}/Examples/gpu/UltralightNet.Vulkan.TestApp/bin/Debug/net6.0",
"console": "internalConsole",
"stopAtEntry": false
"stopAtEntry": false,
"envFile": "${workspaceFolder}/.env"
},
{
"name": "Veldrid TestApp",
Expand All @@ -52,7 +48,8 @@
"args": [],
"cwd": "${workspaceFolder}/Examples/AppCore/UltralightNet.AppCore.TestApp/bin/Debug/net6.0",
"console": "internalConsole",
"stopAtEntry": false
"stopAtEntry": false,
"envFile": "${workspaceFolder}/.env"
},
{
"name": "TestApp",
Expand All @@ -71,10 +68,8 @@
"request": "launch",
"preLaunchTask": "build_Examples_GettingStarted",
"program": "${workspaceFolder}/Examples/Headless/GettingStarted/bin/Debug/net6.0/GettingStarted.dll",
"args": [],
"cwd": "${workspaceFolder}/Examples/Headless/GettingStarted/bin/Debug/net6.0",
"console": "internalConsole",
"stopAtEntry": false
"envFile": "${workspaceFolder}/.env"
},
{
"name": ".NET Core Attach",
Expand Down
12 changes: 9 additions & 3 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<VersionPrefix>1.3.0</VersionPrefix>
<VersionSuffix>alpha.6</VersionSuffix>
<VersionSuffix></VersionSuffix>

<Authors>Supine</Authors>
<PackageProjectUrl>https://github.com/SupinePandora43/UltralightNet</PackageProjectUrl>
Expand All @@ -10,6 +10,7 @@

<PublishRepositoryUrl>true</PublishRepositoryUrl>
<IncludeSymbols>true</IncludeSymbols>
<UseSourceLink>true</UseSourceLink>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>

<SolutionDir>$(MSBuildThisFileDirectory)</SolutionDir>
Expand All @@ -18,19 +19,24 @@

<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Nullable>enable</Nullable>
<LangVersion>10</LangVersion> <!-- Set to 11, when .NET 7 comes out <3 -->
<LangVersion>11</LangVersion>
<ImplicitUsings>disable</ImplicitUsings>

<NoWarn>1006</NoWarn>
<AnalysisModeReliability>all</AnalysisModeReliability>

<IsTrimmable>true</IsTrimmable>
<PublishTrimmed>true</PublishTrimmed>
<TrimMode>link</TrimMode>
<TrimMode>full</TrimMode>

<PackageLicenseExpression>MIT</PackageLicenseExpression>

<PackageReadmeFile>README.md</PackageReadmeFile>


<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>

<UltralightVersion>1.3.0</UltralightVersion>
</PropertyGroup>

<ItemGroup>
Expand Down
51 changes: 19 additions & 32 deletions Examples/AppCore/UltralightNet.AppCore.TestApp/Program.cs
Original file line number Diff line number Diff line change
@@ -1,40 +1,27 @@
using System;
using System.IO;
using UltralightNet;
using UltralightNet.AppCore;

namespace UltralightNet.AppCore.TestApp;
ULPlatform.FileSystem = ULPlatform.DefaultFileSystem;
using var app = ULApp.Create(new(), new());
using var window = app.MainMonitor.CreateWindow(512, 512);

class Program
{
static void Main()
{
AppCoreMethods.ulEnableDefaultLogger("./log.txt");
AppCoreMethods.ulEnablePlatformFileSystem(Path.GetDirectoryName(typeof(Program).Assembly.Location) ?? "./");
window.Title = "AppCore Example";

using ULApp app = ULApp.Create(new(), new());
using ULWindow window = app.MainMonitor.CreateWindow(512, 512, false, ULWindowFlags.Titled | ULWindowFlags.Resizable | ULWindowFlags.Maximizable);
using var overlay = window.CreateOverlay(window.ScreenWidth, window.ScreenHeight);
window.OnResize += (uint width, uint height) => overlay.Resize(width, height);
window.OnClose += () => app.Quit();

window.Title = "test title";
var view = overlay.View;
//view.URL = "https://github.com/SupinePandora43/UltralightNet";

using ULOverlay overlay = window.CreateOverlay(window.Width, window.Height, 0, 0);
window.SetResizeCallback((IntPtr user_data, ULWindow window, uint width, uint height) => overlay.Resize(width, height));
window.SetCloseCallback((_, _) => app.Quit());
view.OnFailLoading += (frame_id, is_main_frame, url, description, error_domain, error_code) => throw new Exception("Failed loading");

View view = overlay.View;
//view.URL = "https://github.com/SupinePandora43/UltralightNet";
//view.HTML = "<html><body><p>123</p></body></html>";
//view.URL = "https://vk.com/supinepandora43";
//view.URL = "https://www.youtube.com/watch?v=N1v4TjntTJI";
//view.URL = "https://twitter.com/@supinepandora43";
view.URL = "https://ultralig.ht/";
//while (!l) { app.Renderer.Update(); Thread.Sleep(20); }

view.OnFailLoading += (frame_id, is_main_frame, url, description, error_domain, error_code) => throw new Exception("Failed loading");

bool l = false;

view.OnFinishLoading += (frame_id, is_main_frame, url) => l = true;

//view.HTML = "<html><body><p>123</p></body></html>";
//view.URL = "https://vk.com/supinepandora43";
//view.URL = "https://www.youtube.com/watch?v=N1v4TjntTJI";
//view.URL = "https://twitter.com/@supinepandora43";
view.URL = "https://en.key-test.ru/";
//while (!l) { app.Renderer.Update(); Thread.Sleep(20); }

app.Run();
}
}
app.Run();
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="UltralightNet.AppCore" Version="$(Version)" />
<PackageReference Include="UltralightNet.Binaries" Version="$(Version)" />
<PackageReference Include="UltralightNet.Resources" Version="$(Version)" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\..\src\UltralightNet\UltralightNet.csproj" />
<ProjectReference Include="..\..\..\src\UltralightNet.AppCore\UltralightNet.AppCore.csproj" />
</ItemGroup>

</Project>
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="UltralightNet.Binaries" Version="$(UltralightVersion)" />
<PackageReference Include="UltralightNet.AppCore.Binaries" Version="$(UltralightVersion)" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\..\src\UltralightNet\UltralightNet.csproj" />
<ProjectReference Include="..\..\..\src\UltralightNet.AppCore\UltralightNet.AppCore.csproj" />
</ItemGroup>

</Project>
Loading
Loading