Merge pull request #73 from GwynethLlewelyn/gwyn-fix-item-same-key
Fixing Dictionary.Add(key, value) giving the error that a duplicate key exists and exits
This commit is contained in:
26
.editorconfig
Normal file
26
.editorconfig
Normal file
@@ -0,0 +1,26 @@
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
# Unix-style newlines with a newline ending every file
|
||||
[*]
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
indent_style = tab
|
||||
indent_size = tab
|
||||
tab_width = 2
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
# The property below is not yet universally supported
|
||||
[*.md]
|
||||
max_line_length = 108
|
||||
word_wrap = true
|
||||
# Markdown sometimes uses two spaces at the end to
|
||||
# mark soft line breaks
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.yml]
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
trim_trailing_whitespace = true
|
||||
42
.github/workflows/codeql-analysis.yml
vendored
42
.github/workflows/codeql-analysis.yml
vendored
@@ -52,8 +52,8 @@ jobs:
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v1
|
||||
# - name: Autobuild
|
||||
# uses: github/codeql-action/autobuild@v1
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
@@ -62,9 +62,41 @@ jobs:
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
- name: Build cross-platform projects
|
||||
run: |
|
||||
dotnet build PrimMesher/LibreMetaverse.PrimMesher.csproj
|
||||
dotnet build LibreMetaverse.LslTools/LibreMetaverse.LslTools.csproj
|
||||
dotnet build LibreMetaverse.Types/LibreMetaverse.Types.csproj
|
||||
dotnet build LibreMetaverse.StructuredData/LibreMetaverse.StructuredData.csproj
|
||||
dotnet build LibreMetaverse/LibreMetaverse.csproj
|
||||
dotnet build LibreMetaverse.Rendering.Simple/LibreMetaverse.Rendering.Simple.csproj
|
||||
dotnet build LibreMetaverse.Rendering.Meshmerizer/LibreMetaverse.Rendering.Meshmerizer.csproj
|
||||
dotnet build LibreMetaverse.Voice/LibreMetaverse.Voice.csproj
|
||||
dotnet build LibreMetaverse.Utilities/LibreMetaverse.Utilities.csproj
|
||||
|
||||
- name: Build cross-platform example projects
|
||||
run: |
|
||||
dotnet build Programs/examples/IRCGateway/IRCGateway.csproj
|
||||
dotnet build Programs/examples/PacketDump/PacketDump.csproj
|
||||
dotnet build Programs/examples/TestClient/TestClient.csproj
|
||||
dotnet build Programs/mapgenerator/mapgenerator.csproj
|
||||
dotnet build Programs/VoiceTest/VoiceTest.csproj
|
||||
|
||||
# These GUI projects fail to build. Disabled for now.
|
||||
# - name: Build GUI projects
|
||||
# run: |
|
||||
# dotnet build LibreMetaverse.GUI/LibreMetaverse.GUI.csproj
|
||||
# dotnet build Programs/Baker/Baker.csproj
|
||||
# dotnet build Programs/examples/Dashboard/Dashboard.csproj
|
||||
# dotnet build Programs/examples/GridAccountant/GridAccountant.csproj
|
||||
# dotnet build Programs/examples/groupmanager/groupmanager.csproj
|
||||
# dotnet build Programs/examples/Heightmap/Heightmap.csproj
|
||||
|
||||
# These projects also have issues.
|
||||
# - name: Build GridProxy projects
|
||||
# run: |
|
||||
# dotnet build Programs/GridProxy/GridProxy.csproj
|
||||
# dotnet build Programs/GridProxy/GridProxyApp.csproj
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v1
|
||||
|
||||
42
.github/workflows/dotnet.yml
vendored
Normal file
42
.github/workflows/dotnet.yml
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
# A test workflow, which seems to get good results sometimes.
|
||||
# (gwyneth 20220418)
|
||||
# See https://docs.microsoft.com/en-us/dotnet/devops/dotnet-test-github-action
|
||||
name: .NET
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
paths:
|
||||
- '**.cs'
|
||||
- '**.csproj'
|
||||
|
||||
env:
|
||||
# We'll stick to net6.0, as 5.0 seems not to work as well as it should
|
||||
# - at least for testing purposes (gwyneth 20220418)
|
||||
DOTNET_VERSION: '6.0.4'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
name: dotnet-${{ matrix.os }}
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@v1
|
||||
with:
|
||||
dotnet-version: 6.0.x
|
||||
- name: Restore dependencies
|
||||
run: dotnet restore LibreMetaverse.ReleaseNoGui.sln
|
||||
- name: Build
|
||||
run: dotnet build --no-restore LibreMetaverse.ReleaseNoGui.sln
|
||||
# I have no idea how to pass the avatar password for the GridClientTests, so I'll have to skip this
|
||||
# or, alternatively, set up a different account for testing purposes (gwyneth 20220418)
|
||||
# - name: Test
|
||||
# run: dotnet test --no-build --verbosity normal LibreMetaverse.ReleaseNoGui.sln
|
||||
|
||||
42
.gitignore
vendored
42
.gitignore
vendored
@@ -1,3 +1,45 @@
|
||||
~*
|
||||
# Stupid macOS temporary files
|
||||
|
||||
# General
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
|
||||
# Icon must end with two \r
|
||||
Icon
|
||||
|
||||
|
||||
Icon?
|
||||
|
||||
# Thumbnails
|
||||
._*
|
||||
|
||||
# Files that might appear in the root of a volume
|
||||
.DocumentRevisions-V100
|
||||
.fseventsd
|
||||
.Spotlight-V100
|
||||
.TemporaryItems
|
||||
.Trashes
|
||||
.VolumeIcon.icns
|
||||
.com.apple.timemachine.donotpresent
|
||||
|
||||
# Directories potentially created on remote AFP share
|
||||
.AppleDB
|
||||
.AppleDesktop
|
||||
Network Trash Folder
|
||||
Temporary Items
|
||||
.apdisk
|
||||
|
||||
# Stuff from the Nova editor
|
||||
.nova
|
||||
node_modules
|
||||
package.json
|
||||
package-lock.json
|
||||
.eslintrc.yml
|
||||
.prettierrc.json
|
||||
|
||||
# Original LibreMetaverse .gitignore follows
|
||||
compile.bat
|
||||
*.user
|
||||
*.userprefs
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<Version>0.10.0.0</Version>
|
||||
<Product>LibreMetaverse</Product>
|
||||
<Authors>Sjofn LLC, OpenMetaverse Developers</Authors>
|
||||
<Copyright>Copyright © OpenMetaverse Developers 2008, 2017. Copyright © Sjofn LLC 2018-2022. All rights reserved.</Copyright>
|
||||
<Trademark>LibreMetaverse is a trademark of Sjofn LLC.</Trademark>
|
||||
<Company>Sjofn LLC</Company>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<PackageVersion>0.10.0.0</PackageVersion>
|
||||
<PackageIcon>logo.png</PackageIcon>
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
<PackageLicenseExpression>BSD-3-Clause</PackageLicenseExpression>
|
||||
<PackageProjectUrl>https://github.com/cinderblocks/libremetaverse</PackageProjectUrl>
|
||||
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
||||
<PackageTags>LMV OMV OpenMetaverse OpenSim Halcyon OpenMetaverseFoundation VirtualWorld VirtualReality 3D Radegast MEGAbolt SecondLife</PackageTags>
|
||||
<RepositoryUrl>https://github.com/cinderblocks/libremetaverse</RepositoryUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<RepositoryBranch>master</RepositoryBranch>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<Version>1.9.20.453-gwyn</Version>
|
||||
<Product>LibreMetaverse</Product>
|
||||
<Authors>Sjofn LLC, OpenMetaverse Developers</Authors>
|
||||
<Copyright>Copyright © OpenMetaverse Developers 2008, 2017. Copyright © Sjofn LLC 2018-2022. All rights reserved.</Copyright>
|
||||
<Trademark>LibreMetaverse is a trademark of Sjofn LLC.</Trademark>
|
||||
<Company>Sjofn LLC</Company>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<PackageVersion>1.9.20.453-gwyn</PackageVersion>
|
||||
<PackageIcon>logo.png</PackageIcon>
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
<PackageLicenseExpression>BSD-3-Clause</PackageLicenseExpression>
|
||||
<PackageProjectUrl>https://github.com/cinderblocks/libremetaverse</PackageProjectUrl>
|
||||
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
||||
<PackageTags>LMV OMV OpenMetaverse OpenSim Halcyon OpenMetaverseFoundation VirtualWorld VirtualReality 3D Radegast MEGAbolt SecondLife</PackageTags>
|
||||
<RepositoryUrl>https://github.com/cinderblocks/libremetaverse</RepositoryUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<RepositoryBranch>master</RepositoryBranch>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup Condition=" '$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows)))' ">
|
||||
<TargetFrameworks>net471;net48;netcoreapp3.1;net5.0-windows</TargetFrameworks>
|
||||
<TargetFrameworks>net471;net48;netcoreapp3.1;net5.0-windows;net6.0-windows</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux)))' ">
|
||||
<TargetFrameworks>net471;netcoreapp3.1</TargetFrameworks>
|
||||
<TargetFrameworks>net471;netcoreapp3.1;net5.0-linux;net6.0-linux</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))' ">
|
||||
<TargetFrameworks>net471;netcoreapp3.1</TargetFrameworks>
|
||||
<TargetFrameworks>net471;netcoreapp3.1;net5.0-linux;net6.0-linux</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<AssemblyName>LibreMetaverse.GUI</AssemblyName>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0</TargetFrameworks>
|
||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0;net6.0</TargetFrameworks>
|
||||
<AssemblyName>LibreMetaverse.LslTools</AssemblyName>
|
||||
<PackageId>LibreMetaverse.LslTools</PackageId>
|
||||
<Description>Lexer for LSL scrripting language</Description>
|
||||
|
||||
@@ -73,7 +73,9 @@ namespace LibreMetaverse.LslTools
|
||||
Console.WriteLine("about to pop {0} count is {1}", (object) this.m_depth, (object) yyps.m_stack.Count);
|
||||
yyps.Pop(ref top, this.m_depth, ns);
|
||||
if (ns.pos == 0)
|
||||
{
|
||||
ns.pos = top.m_value.pos;
|
||||
}
|
||||
top.m_value = ns;
|
||||
}
|
||||
|
||||
|
||||
360
LibreMetaverse.ReleaseNoGui.sln
Normal file
360
LibreMetaverse.ReleaseNoGui.sln
Normal file
@@ -0,0 +1,360 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.32002.261
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GridProxy", "Programs\GridProxy\GridProxy.csproj", "{79B51DAA-0000-0000-0000-000000000000}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IRCGateway", "Programs\examples\IRCGateway\IRCGateway.csproj", "{89049BBC-0000-0000-0000-000000000000}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse", "LibreMetaverse\LibreMetaverse.csproj", "{27C70F3A-0000-0000-0000-000000000000}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse.Rendering.Meshmerizer", "LibreMetaverse.Rendering.Meshmerizer\LibreMetaverse.Rendering.Meshmerizer.csproj", "{95479B1D-0000-0000-0000-000000000000}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{2E2B643F-F18B-4791-BA4B-6E82D0E794B6} = {2E2B643F-F18B-4791-BA4B-6E82D0E794B6}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse.Rendering.Simple", "LibreMetaverse.Rendering.Simple\LibreMetaverse.Rendering.Simple.csproj", "{29E206AC-0000-0000-0000-000000000000}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse.StructuredData", "LibreMetaverse.StructuredData\LibreMetaverse.StructuredData.csproj", "{89D7A3E5-0000-0000-0000-000000000000}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse.Tests", "LibreMetaverse.Tests\LibreMetaverse.Tests.csproj", "{0CCC2C3D-0000-0000-0000-000000000000}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse.Utilities", "LibreMetaverse.Utilities\LibreMetaverse.Utilities.csproj", "{1266CE08-0000-0000-0000-000000000000}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse.Types", "LibreMetaverse.Types\LibreMetaverse.Types.csproj", "{B37B02AD-0000-0000-0000-000000000000}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PacketDump", "Programs\examples\PacketDump\PacketDump.csproj", "{58443010-0000-0000-0000-000000000000}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestClient", "Programs\examples\TestClient\TestClient.csproj", "{9F71FDB3-0000-0000-0000-000000000000}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VoiceTest", "Programs\VoiceTest\VoiceTest.csproj", "{EE4EA934-0000-0000-0000-000000000000}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse.PrimMesher", "PrimMesher\LibreMetaverse.PrimMesher.csproj", "{2E2B643F-F18B-4791-BA4B-6E82D0E794B6}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "mapgenerator", "Programs\mapgenerator\mapgenerator.csproj", "{2867B4B3-0000-0000-0000-000000000000}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F8CE4DE6-82E5-49D1-BCDF-BB3E63A52867}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
Directory.Build.props = Directory.Build.props
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "utilities", "utilities", "{6EF29E7F-FC69-4269-BDCF-4780D54E299D}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
.appveyor.yml = .appveyor.yml
|
||||
util\InstallRemotePfx.ps1 = util\InstallRemotePfx.ps1
|
||||
util\SignPackages.ps1 = util\SignPackages.ps1
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse.LslTools", "LibreMetaverse.LslTools\LibreMetaverse.LslTools.csproj", "{989E5E15-D99B-4CF1-AF64-90C568FC979A}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse.Voice", "LibreMetaverse.Voice\LibreMetaverse.Voice.csproj", "{FB07C6DE-F791-4336-B6E2-B32EEAC34792}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
ReleaseNoGui|Any CPU = ReleaseNoGui|Any CPU
|
||||
ReleaseNoGui|x64 = ReleaseNoGui|x64
|
||||
ReleaseNoGui|x86 = ReleaseNoGui|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{79B51DAA-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{79B51DAA-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{79B51DAA-0000-0000-0000-000000000000}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{79B51DAA-0000-0000-0000-000000000000}.Debug|x64.Build.0 = Debug|x64
|
||||
{79B51DAA-0000-0000-0000-000000000000}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{79B51DAA-0000-0000-0000-000000000000}.Debug|x86.Build.0 = Debug|x86
|
||||
{79B51DAA-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{79B51DAA-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|x64
|
||||
{79B51DAA-0000-0000-0000-000000000000}.Release|x64.ActiveCfg = Release|x64
|
||||
{79B51DAA-0000-0000-0000-000000000000}.Release|x64.Build.0 = Release|x64
|
||||
{79B51DAA-0000-0000-0000-000000000000}.Release|x86.ActiveCfg = Release|x86
|
||||
{79B51DAA-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|x86
|
||||
{79B51DAA-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.ActiveCfg = Release|x64
|
||||
{79B51DAA-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.Build.0 = Release|x64
|
||||
{79B51DAA-0000-0000-0000-000000000000}.ReleaseNoGui|x64.ActiveCfg = Release|x64
|
||||
{79B51DAA-0000-0000-0000-000000000000}.ReleaseNoGui|x64.Build.0 = Release|x64
|
||||
{79B51DAA-0000-0000-0000-000000000000}.ReleaseNoGui|x86.ActiveCfg = Release|x86
|
||||
{79B51DAA-0000-0000-0000-000000000000}.ReleaseNoGui|x86.Build.0 = Release|x86
|
||||
{89049BBC-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{89049BBC-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{89049BBC-0000-0000-0000-000000000000}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{89049BBC-0000-0000-0000-000000000000}.Debug|x64.Build.0 = Debug|x64
|
||||
{89049BBC-0000-0000-0000-000000000000}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{89049BBC-0000-0000-0000-000000000000}.Debug|x86.Build.0 = Debug|x86
|
||||
{89049BBC-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{89049BBC-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|x64
|
||||
{89049BBC-0000-0000-0000-000000000000}.Release|x64.ActiveCfg = Release|x64
|
||||
{89049BBC-0000-0000-0000-000000000000}.Release|x64.Build.0 = Release|x64
|
||||
{89049BBC-0000-0000-0000-000000000000}.Release|x86.ActiveCfg = Release|x86
|
||||
{89049BBC-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|x86
|
||||
{89049BBC-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.ActiveCfg = Release|x64
|
||||
{89049BBC-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.Build.0 = Release|x64
|
||||
{89049BBC-0000-0000-0000-000000000000}.ReleaseNoGui|x64.ActiveCfg = Release|x64
|
||||
{89049BBC-0000-0000-0000-000000000000}.ReleaseNoGui|x64.Build.0 = Release|x64
|
||||
{89049BBC-0000-0000-0000-000000000000}.ReleaseNoGui|x86.ActiveCfg = Release|x86
|
||||
{89049BBC-0000-0000-0000-000000000000}.ReleaseNoGui|x86.Build.0 = Release|x86
|
||||
{27C70F3A-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{27C70F3A-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{27C70F3A-0000-0000-0000-000000000000}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{27C70F3A-0000-0000-0000-000000000000}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{27C70F3A-0000-0000-0000-000000000000}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{27C70F3A-0000-0000-0000-000000000000}.Debug|x86.Build.0 = Debug|x86
|
||||
{27C70F3A-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{27C70F3A-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{27C70F3A-0000-0000-0000-000000000000}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{27C70F3A-0000-0000-0000-000000000000}.Release|x64.Build.0 = Release|Any CPU
|
||||
{27C70F3A-0000-0000-0000-000000000000}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{27C70F3A-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|Any CPU
|
||||
{27C70F3A-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{27C70F3A-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.Build.0 = Release|Any CPU
|
||||
{27C70F3A-0000-0000-0000-000000000000}.ReleaseNoGui|x64.ActiveCfg = Release|Any CPU
|
||||
{27C70F3A-0000-0000-0000-000000000000}.ReleaseNoGui|x64.Build.0 = Release|Any CPU
|
||||
{27C70F3A-0000-0000-0000-000000000000}.ReleaseNoGui|x86.ActiveCfg = Release|Any CPU
|
||||
{27C70F3A-0000-0000-0000-000000000000}.ReleaseNoGui|x86.Build.0 = Release|Any CPU
|
||||
{95479B1D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{95479B1D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{95479B1D-0000-0000-0000-000000000000}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{95479B1D-0000-0000-0000-000000000000}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{95479B1D-0000-0000-0000-000000000000}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{95479B1D-0000-0000-0000-000000000000}.Debug|x86.Build.0 = Debug|x86
|
||||
{95479B1D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{95479B1D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{95479B1D-0000-0000-0000-000000000000}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{95479B1D-0000-0000-0000-000000000000}.Release|x64.Build.0 = Release|Any CPU
|
||||
{95479B1D-0000-0000-0000-000000000000}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{95479B1D-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|Any CPU
|
||||
{95479B1D-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{95479B1D-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.Build.0 = Release|Any CPU
|
||||
{95479B1D-0000-0000-0000-000000000000}.ReleaseNoGui|x64.ActiveCfg = Release|Any CPU
|
||||
{95479B1D-0000-0000-0000-000000000000}.ReleaseNoGui|x64.Build.0 = Release|Any CPU
|
||||
{95479B1D-0000-0000-0000-000000000000}.ReleaseNoGui|x86.ActiveCfg = Release|Any CPU
|
||||
{95479B1D-0000-0000-0000-000000000000}.ReleaseNoGui|x86.Build.0 = Release|Any CPU
|
||||
{29E206AC-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{29E206AC-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{29E206AC-0000-0000-0000-000000000000}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{29E206AC-0000-0000-0000-000000000000}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{29E206AC-0000-0000-0000-000000000000}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{29E206AC-0000-0000-0000-000000000000}.Debug|x86.Build.0 = Debug|x86
|
||||
{29E206AC-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{29E206AC-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{29E206AC-0000-0000-0000-000000000000}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{29E206AC-0000-0000-0000-000000000000}.Release|x64.Build.0 = Release|Any CPU
|
||||
{29E206AC-0000-0000-0000-000000000000}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{29E206AC-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|Any CPU
|
||||
{29E206AC-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{29E206AC-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.Build.0 = Release|Any CPU
|
||||
{29E206AC-0000-0000-0000-000000000000}.ReleaseNoGui|x64.ActiveCfg = Release|Any CPU
|
||||
{29E206AC-0000-0000-0000-000000000000}.ReleaseNoGui|x64.Build.0 = Release|Any CPU
|
||||
{29E206AC-0000-0000-0000-000000000000}.ReleaseNoGui|x86.ActiveCfg = Release|Any CPU
|
||||
{29E206AC-0000-0000-0000-000000000000}.ReleaseNoGui|x86.Build.0 = Release|Any CPU
|
||||
{89D7A3E5-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{89D7A3E5-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{89D7A3E5-0000-0000-0000-000000000000}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{89D7A3E5-0000-0000-0000-000000000000}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{89D7A3E5-0000-0000-0000-000000000000}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{89D7A3E5-0000-0000-0000-000000000000}.Debug|x86.Build.0 = Debug|x86
|
||||
{89D7A3E5-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{89D7A3E5-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{89D7A3E5-0000-0000-0000-000000000000}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{89D7A3E5-0000-0000-0000-000000000000}.Release|x64.Build.0 = Release|Any CPU
|
||||
{89D7A3E5-0000-0000-0000-000000000000}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{89D7A3E5-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|Any CPU
|
||||
{89D7A3E5-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{89D7A3E5-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.Build.0 = Release|Any CPU
|
||||
{89D7A3E5-0000-0000-0000-000000000000}.ReleaseNoGui|x64.ActiveCfg = Release|Any CPU
|
||||
{89D7A3E5-0000-0000-0000-000000000000}.ReleaseNoGui|x64.Build.0 = Release|Any CPU
|
||||
{89D7A3E5-0000-0000-0000-000000000000}.ReleaseNoGui|x86.ActiveCfg = Release|Any CPU
|
||||
{89D7A3E5-0000-0000-0000-000000000000}.ReleaseNoGui|x86.Build.0 = Release|Any CPU
|
||||
{0CCC2C3D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0CCC2C3D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0CCC2C3D-0000-0000-0000-000000000000}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0CCC2C3D-0000-0000-0000-000000000000}.Debug|x64.Build.0 = Debug|x64
|
||||
{0CCC2C3D-0000-0000-0000-000000000000}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{0CCC2C3D-0000-0000-0000-000000000000}.Debug|x86.Build.0 = Debug|x86
|
||||
{0CCC2C3D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0CCC2C3D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{0CCC2C3D-0000-0000-0000-000000000000}.Release|x64.ActiveCfg = Release|x64
|
||||
{0CCC2C3D-0000-0000-0000-000000000000}.Release|x64.Build.0 = Release|x64
|
||||
{0CCC2C3D-0000-0000-0000-000000000000}.Release|x86.ActiveCfg = Release|x86
|
||||
{0CCC2C3D-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|x86
|
||||
{0CCC2C3D-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0CCC2C3D-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.Build.0 = Release|Any CPU
|
||||
{0CCC2C3D-0000-0000-0000-000000000000}.ReleaseNoGui|x64.ActiveCfg = Release|x64
|
||||
{0CCC2C3D-0000-0000-0000-000000000000}.ReleaseNoGui|x64.Build.0 = Release|x64
|
||||
{0CCC2C3D-0000-0000-0000-000000000000}.ReleaseNoGui|x86.ActiveCfg = Release|x86
|
||||
{0CCC2C3D-0000-0000-0000-000000000000}.ReleaseNoGui|x86.Build.0 = Release|x86
|
||||
{1266CE08-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1266CE08-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1266CE08-0000-0000-0000-000000000000}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{1266CE08-0000-0000-0000-000000000000}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{1266CE08-0000-0000-0000-000000000000}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{1266CE08-0000-0000-0000-000000000000}.Debug|x86.Build.0 = Debug|x86
|
||||
{1266CE08-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1266CE08-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1266CE08-0000-0000-0000-000000000000}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{1266CE08-0000-0000-0000-000000000000}.Release|x64.Build.0 = Release|Any CPU
|
||||
{1266CE08-0000-0000-0000-000000000000}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{1266CE08-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|Any CPU
|
||||
{1266CE08-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1266CE08-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.Build.0 = Release|Any CPU
|
||||
{1266CE08-0000-0000-0000-000000000000}.ReleaseNoGui|x64.ActiveCfg = Release|Any CPU
|
||||
{1266CE08-0000-0000-0000-000000000000}.ReleaseNoGui|x64.Build.0 = Release|Any CPU
|
||||
{1266CE08-0000-0000-0000-000000000000}.ReleaseNoGui|x86.ActiveCfg = Release|Any CPU
|
||||
{1266CE08-0000-0000-0000-000000000000}.ReleaseNoGui|x86.Build.0 = Release|Any CPU
|
||||
{B37B02AD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B37B02AD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B37B02AD-0000-0000-0000-000000000000}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{B37B02AD-0000-0000-0000-000000000000}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{B37B02AD-0000-0000-0000-000000000000}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{B37B02AD-0000-0000-0000-000000000000}.Debug|x86.Build.0 = Debug|x86
|
||||
{B37B02AD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B37B02AD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B37B02AD-0000-0000-0000-000000000000}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{B37B02AD-0000-0000-0000-000000000000}.Release|x64.Build.0 = Release|Any CPU
|
||||
{B37B02AD-0000-0000-0000-000000000000}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{B37B02AD-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|Any CPU
|
||||
{B37B02AD-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B37B02AD-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.Build.0 = Release|Any CPU
|
||||
{B37B02AD-0000-0000-0000-000000000000}.ReleaseNoGui|x64.ActiveCfg = Release|Any CPU
|
||||
{B37B02AD-0000-0000-0000-000000000000}.ReleaseNoGui|x64.Build.0 = Release|Any CPU
|
||||
{B37B02AD-0000-0000-0000-000000000000}.ReleaseNoGui|x86.ActiveCfg = Release|Any CPU
|
||||
{B37B02AD-0000-0000-0000-000000000000}.ReleaseNoGui|x86.Build.0 = Release|Any CPU
|
||||
{58443010-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{58443010-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{58443010-0000-0000-0000-000000000000}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{58443010-0000-0000-0000-000000000000}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{58443010-0000-0000-0000-000000000000}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{58443010-0000-0000-0000-000000000000}.Debug|x86.Build.0 = Debug|x86
|
||||
{58443010-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{58443010-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{58443010-0000-0000-0000-000000000000}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{58443010-0000-0000-0000-000000000000}.Release|x64.Build.0 = Release|Any CPU
|
||||
{58443010-0000-0000-0000-000000000000}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{58443010-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|Any CPU
|
||||
{58443010-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{58443010-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.Build.0 = Release|Any CPU
|
||||
{58443010-0000-0000-0000-000000000000}.ReleaseNoGui|x64.ActiveCfg = Release|x64
|
||||
{58443010-0000-0000-0000-000000000000}.ReleaseNoGui|x64.Build.0 = Release|x64
|
||||
{58443010-0000-0000-0000-000000000000}.ReleaseNoGui|x86.ActiveCfg = Release|Any CPU
|
||||
{58443010-0000-0000-0000-000000000000}.ReleaseNoGui|x86.Build.0 = Release|Any CPU
|
||||
{9F71FDB3-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{9F71FDB3-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{9F71FDB3-0000-0000-0000-000000000000}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{9F71FDB3-0000-0000-0000-000000000000}.Debug|x64.Build.0 = Debug|x64
|
||||
{9F71FDB3-0000-0000-0000-000000000000}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{9F71FDB3-0000-0000-0000-000000000000}.Debug|x86.Build.0 = Debug|x86
|
||||
{9F71FDB3-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{9F71FDB3-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|x64
|
||||
{9F71FDB3-0000-0000-0000-000000000000}.Release|x64.ActiveCfg = Release|x64
|
||||
{9F71FDB3-0000-0000-0000-000000000000}.Release|x64.Build.0 = Release|x64
|
||||
{9F71FDB3-0000-0000-0000-000000000000}.Release|x86.ActiveCfg = Release|x86
|
||||
{9F71FDB3-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|x86
|
||||
{9F71FDB3-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.ActiveCfg = Release|x64
|
||||
{9F71FDB3-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.Build.0 = Release|x64
|
||||
{9F71FDB3-0000-0000-0000-000000000000}.ReleaseNoGui|x64.ActiveCfg = Release|x64
|
||||
{9F71FDB3-0000-0000-0000-000000000000}.ReleaseNoGui|x64.Build.0 = Release|x64
|
||||
{9F71FDB3-0000-0000-0000-000000000000}.ReleaseNoGui|x86.ActiveCfg = Release|x86
|
||||
{9F71FDB3-0000-0000-0000-000000000000}.ReleaseNoGui|x86.Build.0 = Release|x86
|
||||
{EE4EA934-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EE4EA934-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EE4EA934-0000-0000-0000-000000000000}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{EE4EA934-0000-0000-0000-000000000000}.Debug|x64.Build.0 = Debug|x64
|
||||
{EE4EA934-0000-0000-0000-000000000000}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{EE4EA934-0000-0000-0000-000000000000}.Debug|x86.Build.0 = Debug|x86
|
||||
{EE4EA934-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EE4EA934-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{EE4EA934-0000-0000-0000-000000000000}.Release|x64.ActiveCfg = Release|x64
|
||||
{EE4EA934-0000-0000-0000-000000000000}.Release|x64.Build.0 = Release|x64
|
||||
{EE4EA934-0000-0000-0000-000000000000}.Release|x86.ActiveCfg = Release|x86
|
||||
{EE4EA934-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|x86
|
||||
{EE4EA934-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EE4EA934-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.Build.0 = Release|Any CPU
|
||||
{EE4EA934-0000-0000-0000-000000000000}.ReleaseNoGui|x64.ActiveCfg = Release|x64
|
||||
{EE4EA934-0000-0000-0000-000000000000}.ReleaseNoGui|x64.Build.0 = Release|x64
|
||||
{EE4EA934-0000-0000-0000-000000000000}.ReleaseNoGui|x86.ActiveCfg = Release|x86
|
||||
{EE4EA934-0000-0000-0000-000000000000}.ReleaseNoGui|x86.Build.0 = Release|x86
|
||||
{2E2B643F-F18B-4791-BA4B-6E82D0E794B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2E2B643F-F18B-4791-BA4B-6E82D0E794B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2E2B643F-F18B-4791-BA4B-6E82D0E794B6}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{2E2B643F-F18B-4791-BA4B-6E82D0E794B6}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{2E2B643F-F18B-4791-BA4B-6E82D0E794B6}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{2E2B643F-F18B-4791-BA4B-6E82D0E794B6}.Debug|x86.Build.0 = Debug|x86
|
||||
{2E2B643F-F18B-4791-BA4B-6E82D0E794B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2E2B643F-F18B-4791-BA4B-6E82D0E794B6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2E2B643F-F18B-4791-BA4B-6E82D0E794B6}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{2E2B643F-F18B-4791-BA4B-6E82D0E794B6}.Release|x64.Build.0 = Release|Any CPU
|
||||
{2E2B643F-F18B-4791-BA4B-6E82D0E794B6}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{2E2B643F-F18B-4791-BA4B-6E82D0E794B6}.Release|x86.Build.0 = Release|Any CPU
|
||||
{2E2B643F-F18B-4791-BA4B-6E82D0E794B6}.ReleaseNoGui|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2E2B643F-F18B-4791-BA4B-6E82D0E794B6}.ReleaseNoGui|Any CPU.Build.0 = Release|Any CPU
|
||||
{2E2B643F-F18B-4791-BA4B-6E82D0E794B6}.ReleaseNoGui|x64.ActiveCfg = Release|Any CPU
|
||||
{2E2B643F-F18B-4791-BA4B-6E82D0E794B6}.ReleaseNoGui|x64.Build.0 = Release|Any CPU
|
||||
{2E2B643F-F18B-4791-BA4B-6E82D0E794B6}.ReleaseNoGui|x86.ActiveCfg = Release|Any CPU
|
||||
{2E2B643F-F18B-4791-BA4B-6E82D0E794B6}.ReleaseNoGui|x86.Build.0 = Release|Any CPU
|
||||
{2867B4B3-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2867B4B3-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2867B4B3-0000-0000-0000-000000000000}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{2867B4B3-0000-0000-0000-000000000000}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{2867B4B3-0000-0000-0000-000000000000}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{2867B4B3-0000-0000-0000-000000000000}.Debug|x86.Build.0 = Debug|x86
|
||||
{2867B4B3-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2867B4B3-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2867B4B3-0000-0000-0000-000000000000}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{2867B4B3-0000-0000-0000-000000000000}.Release|x64.Build.0 = Release|Any CPU
|
||||
{2867B4B3-0000-0000-0000-000000000000}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{2867B4B3-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|Any CPU
|
||||
{2867B4B3-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2867B4B3-0000-0000-0000-000000000000}.ReleaseNoGui|Any CPU.Build.0 = Release|Any CPU
|
||||
{2867B4B3-0000-0000-0000-000000000000}.ReleaseNoGui|x64.ActiveCfg = Release|x64
|
||||
{2867B4B3-0000-0000-0000-000000000000}.ReleaseNoGui|x64.Build.0 = Release|x64
|
||||
{2867B4B3-0000-0000-0000-000000000000}.ReleaseNoGui|x86.ActiveCfg = Release|Any CPU
|
||||
{2867B4B3-0000-0000-0000-000000000000}.ReleaseNoGui|x86.Build.0 = Release|Any CPU
|
||||
{989E5E15-D99B-4CF1-AF64-90C568FC979A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{989E5E15-D99B-4CF1-AF64-90C568FC979A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{989E5E15-D99B-4CF1-AF64-90C568FC979A}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{989E5E15-D99B-4CF1-AF64-90C568FC979A}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{989E5E15-D99B-4CF1-AF64-90C568FC979A}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{989E5E15-D99B-4CF1-AF64-90C568FC979A}.Debug|x86.Build.0 = Debug|x86
|
||||
{989E5E15-D99B-4CF1-AF64-90C568FC979A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{989E5E15-D99B-4CF1-AF64-90C568FC979A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{989E5E15-D99B-4CF1-AF64-90C568FC979A}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{989E5E15-D99B-4CF1-AF64-90C568FC979A}.Release|x64.Build.0 = Release|Any CPU
|
||||
{989E5E15-D99B-4CF1-AF64-90C568FC979A}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{989E5E15-D99B-4CF1-AF64-90C568FC979A}.Release|x86.Build.0 = Release|Any CPU
|
||||
{989E5E15-D99B-4CF1-AF64-90C568FC979A}.ReleaseNoGui|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{989E5E15-D99B-4CF1-AF64-90C568FC979A}.ReleaseNoGui|Any CPU.Build.0 = Release|Any CPU
|
||||
{989E5E15-D99B-4CF1-AF64-90C568FC979A}.ReleaseNoGui|x64.ActiveCfg = Release|Any CPU
|
||||
{989E5E15-D99B-4CF1-AF64-90C568FC979A}.ReleaseNoGui|x64.Build.0 = Release|Any CPU
|
||||
{989E5E15-D99B-4CF1-AF64-90C568FC979A}.ReleaseNoGui|x86.ActiveCfg = Release|Any CPU
|
||||
{989E5E15-D99B-4CF1-AF64-90C568FC979A}.ReleaseNoGui|x86.Build.0 = Release|Any CPU
|
||||
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.Release|x64.Build.0 = Release|Any CPU
|
||||
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.Release|x86.Build.0 = Release|Any CPU
|
||||
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.ReleaseNoGui|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.ReleaseNoGui|Any CPU.Build.0 = Release|Any CPU
|
||||
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.ReleaseNoGui|x64.ActiveCfg = Release|Any CPU
|
||||
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.ReleaseNoGui|x64.Build.0 = Release|Any CPU
|
||||
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.ReleaseNoGui|x86.ActiveCfg = Release|Any CPU
|
||||
{FB07C6DE-F791-4336-B6E2-B32EEAC34792}.ReleaseNoGui|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {39A7E333-AFC1-4BA8-9EBC-9298791FDC78}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -1,10 +1,10 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<AssemblyName>LibreMetaverse.Rendering.Meshmerizer</AssemblyName>
|
||||
<PackageId>LibreMetaverse.Rendering.Meshmerizer</PackageId>
|
||||
<Description>Meshmerizer library for rendering mesh assets in LibreMetaverse</Description>
|
||||
<RootNamespace>LibreMetaverse.Rendering.Meshmerizer</RootNamespace>
|
||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0</TargetFrameworks>
|
||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0;net6.0</TargetFrameworks>
|
||||
<OutputType>Library</OutputType>
|
||||
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
|
||||
<IncludeSymbols>true</IncludeSymbols>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<AssemblyName>LibreMetaverse.Rendering.Simple</AssemblyName>
|
||||
<Description>Simple library for rendering mesh assets in LibreMetaverse</Description>
|
||||
<PackageId>LibreMetaverse.Rendering.Simple</PackageId>
|
||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0</TargetFrameworks>
|
||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0;net6.0</TargetFrameworks>
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>LibreMetaverse.Rendering.Simple</RootNamespace>
|
||||
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<AssemblyName>LibreMetaverse.StructuredData</AssemblyName>
|
||||
<Description>LibreMetaverse structured data library</Description>
|
||||
<PackageId>LibreMetaverse.StructuredData</PackageId>
|
||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0</TargetFrameworks>
|
||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0;net6.0</TargetFrameworks>
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>LibreMetaverse.StructuredData</RootNamespace>
|
||||
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<AssemblyName>LibreMetaverse.Tests</AssemblyName>
|
||||
<TargetFrameworks>netcoreapp3.1;net5.0</TargetFrameworks>
|
||||
<TargetFrameworks>netcoreapp3.1;net5.0;net6.0</TargetFrameworks>
|
||||
<!-- <TargetFramework>net6.0</TargetFramework> -->
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>LibreMetaverse.Tests</RootNamespace>
|
||||
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<AssemblyName>LibreMetaverse.Types</AssemblyName>
|
||||
<PackageId>LibreMetaverse.Types</PackageId>
|
||||
<Description>LibreMetaverse type library</Description>
|
||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0</TargetFrameworks>
|
||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0;net6.0</TargetFrameworks>
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>LibreMetaverse</RootNamespace>
|
||||
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
|
||||
|
||||
@@ -212,13 +212,19 @@ namespace OpenMetaverse
|
||||
double sSquared = s * s;
|
||||
|
||||
if (amount == 0f)
|
||||
{
|
||||
result = value1;
|
||||
}
|
||||
else if (amount == 1f)
|
||||
{
|
||||
result = value2;
|
||||
}
|
||||
else
|
||||
{
|
||||
result = (2d * v1 - 2d * v2 + t2 + t1) * sCubed +
|
||||
(3d * v2 - 3d * v1 - 2d * t1 - t2) * sSquared +
|
||||
t1 * s + v1;
|
||||
}
|
||||
return (float)result;
|
||||
}
|
||||
|
||||
@@ -431,7 +437,7 @@ namespace OpenMetaverse
|
||||
{
|
||||
return Platform.Windows;
|
||||
}
|
||||
return System.IO.File.Exists(OSX_CHECK_FILE)
|
||||
return System.IO.File.Exists(OSX_CHECK_FILE)
|
||||
? Platform.OSX : Platform.Linux;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<AssemblyName>LibreMetaverse.Utilities</AssemblyName>
|
||||
<PackageId>LibreMetaverse.Utilities</PackageId>
|
||||
<Description>LibreMetaverse utility library</Description>
|
||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0</TargetFrameworks>
|
||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0;net6.0</TargetFrameworks>
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>LibreMetaverse.Utilities</RootNamespace>
|
||||
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<AssemblyName>LibreMetaverse.Voice</AssemblyName>
|
||||
<PackageId>LibreMetaverse.Voice</PackageId>
|
||||
@@ -9,7 +9,7 @@
|
||||
<IncludeSymbols>true</IncludeSymbols>
|
||||
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
|
||||
<NoWarn>0419,1574,1591</NoWarn>
|
||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0</TargetFrameworks>
|
||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0;net6.0</TargetFrameworks>
|
||||
<Platforms>x64;x86;AnyCPU</Platforms>
|
||||
<OutputPath>..\bin\</OutputPath>
|
||||
</PropertyGroup>
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Net;
|
||||
using System.Threading;
|
||||
using OpenMetaverse.StructuredData;
|
||||
@@ -132,7 +133,7 @@ namespace OpenMetaverse.Http
|
||||
|
||||
if (error is WebException webException)
|
||||
{
|
||||
// Filter out some of the status requests to skip handling
|
||||
// Filter out some of the status requests to skip handling
|
||||
switch (webException.Status)
|
||||
{
|
||||
case WebExceptionStatus.RequestCanceled:
|
||||
@@ -154,12 +155,52 @@ namespace OpenMetaverse.Http
|
||||
_Dead = true;
|
||||
break;
|
||||
case (HttpStatusCode)499: // weird error returned occasionally, ignore for now
|
||||
// I believe this is the timeout error invented by LL for LSL HTTP-out requests (gwyneth 20220413)
|
||||
Logger.Log($"Possible HTTP-out timeout error from {_Address}, no need to continue", Helpers.LogLevel.Debug);
|
||||
|
||||
_Running = false;
|
||||
_Dead = true;
|
||||
break;
|
||||
case HttpStatusCode.InternalServerError:
|
||||
// As per LL's instructions, we ought to consider this a
|
||||
// 'request to close client' (gwyneth 20220413)
|
||||
Logger.Log($"Grid sent a {code} at {_Address}, closing connection", Helpers.LogLevel.Debug);
|
||||
|
||||
// ... but do we happen to have an InnerException? Log it!
|
||||
if (error.InnerException != null)
|
||||
{
|
||||
// unravel the whole inner error message, so we finally figure out what it is!
|
||||
// (gwyneth 20220414)
|
||||
Logger.Log($"Unrecognized internal caps exception from {_Address}: '{error.InnerException.Message}'", Helpers.LogLevel.Warning);
|
||||
Logger.Log("\nMessage ---\n{error.Message}", Helpers.LogLevel.Warning);
|
||||
Logger.Log("\nHelpLink ---\n{ex.HelpLink}", Helpers.LogLevel.Warning);
|
||||
Logger.Log("\nSource ---\n{error.Source}", Helpers.LogLevel.Warning);
|
||||
Logger.Log("\nStackTrace ---\n{error.StackTrace}", Helpers.LogLevel.Warning);
|
||||
Logger.Log("\nTargetSite ---\n{error.TargetSite}", Helpers.LogLevel.Warning);
|
||||
if (error.Data.Count > 0)
|
||||
{
|
||||
Logger.Log(" Extra details:", Helpers.LogLevel.Warning);
|
||||
foreach (DictionaryEntry de in error.Data)
|
||||
Logger.Log(String.Format(" Key: {0,-20} Value: '{1}'",
|
||||
de.Key, de.Value),
|
||||
Helpers.LogLevel.Warning);
|
||||
}
|
||||
// but we'll nevertheless close this connection (gwyneth 20220414)
|
||||
}
|
||||
|
||||
_Running = false;
|
||||
_Dead = true;
|
||||
break;
|
||||
case HttpStatusCode.BadGateway:
|
||||
// This is not good (server) protocol design, but it's normal.
|
||||
// The EventQueue server is a proxy that connects to a Squid
|
||||
// cache which will time out periodically. The EventQueue server
|
||||
// interprets this as a generic error and returns a 502 to us
|
||||
// that we ignore
|
||||
//
|
||||
// Note: if this condition persists, it _might_ be the grid trying to request
|
||||
// that the client closes the connection, as per LL's specs (gwyneth 20220414)
|
||||
Logger.Log($"Grid sent a Bad Gateway Error at {_Address}; probably a time-out from the grid's EventQueue server (normal) -- ignoring and continuing", Helpers.LogLevel.Debug);
|
||||
break;
|
||||
default:
|
||||
++_errorCount;
|
||||
@@ -167,14 +208,26 @@ namespace OpenMetaverse.Http
|
||||
// Try to log a meaningful error message
|
||||
if (code != HttpStatusCode.OK)
|
||||
{
|
||||
Logger.Log($"Unrecognized caps connection problem from {_Address}: {code}",
|
||||
Logger.Log($"Unrecognized caps connection problem from {_Address}: {code}",
|
||||
Helpers.LogLevel.Warning);
|
||||
}
|
||||
else if (error.InnerException != null)
|
||||
{
|
||||
Logger.Log(
|
||||
$"Unrecognized internal caps exception from {_Address}: {error.InnerException.Message}",
|
||||
Helpers.LogLevel.Warning);
|
||||
// see comment above (gwyneth 20220414)
|
||||
Logger.Log($"Unrecognized internal caps exception from {_Address}: '{error.InnerException.Message}'", Helpers.LogLevel.Warning);
|
||||
Logger.Log("\nMessage ---\n{error.Message}", Helpers.LogLevel.Warning);
|
||||
Logger.Log("\nHelpLink ---\n{ex.HelpLink}", Helpers.LogLevel.Warning);
|
||||
Logger.Log("\nSource ---\n{error.Source}", Helpers.LogLevel.Warning);
|
||||
Logger.Log("\nStackTrace ---\n{error.StackTrace}", Helpers.LogLevel.Warning);
|
||||
Logger.Log("\nTargetSite ---\n{error.TargetSite}", Helpers.LogLevel.Warning);
|
||||
if (error.Data.Count > 0)
|
||||
{
|
||||
Logger.Log(" Extra details:", Helpers.LogLevel.Warning);
|
||||
foreach (DictionaryEntry de in error.Data)
|
||||
Logger.Log(String.Format(" Key: {0,-20} Value: {1}",
|
||||
"'" + de.Key + "'", de.Value),
|
||||
Helpers.LogLevel.Warning);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -182,7 +235,7 @@ namespace OpenMetaverse.Http
|
||||
Helpers.LogLevel.Warning);
|
||||
}
|
||||
break;
|
||||
}
|
||||
} // end switch
|
||||
|
||||
#endregion Error handling
|
||||
}
|
||||
|
||||
@@ -31,10 +31,10 @@ namespace OpenMetaverse
|
||||
{
|
||||
/// <summary>
|
||||
/// The InternalDictionary class is used through the library for storing key/value pairs.
|
||||
/// It is intended to be a replacement for the generic Dictionary class and should
|
||||
/// It is intended to be a replacement for the generic Dictionary class and should
|
||||
/// be used in its place. It contains several methods for allowing access to the data from
|
||||
/// outside the library that are read only and thread safe.
|
||||
///
|
||||
///
|
||||
/// </summary>
|
||||
/// <typeparam name="TKey">Key <see langword="Tkey"/></typeparam>
|
||||
/// <typeparam name="TValue">Value <see langword="TValue"/></typeparam>
|
||||
@@ -57,7 +57,7 @@ namespace OpenMetaverse
|
||||
public int Count { get { lock (Dictionary) return Dictionary.Count; } }
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <seealso cref="T:InternalDictionary"/> Class
|
||||
/// Initializes a new instance of the <seealso cref="T:InternalDictionary"/> Class
|
||||
/// with the specified key/value, has the default initial capacity.
|
||||
/// </summary>
|
||||
/// <example>
|
||||
@@ -72,8 +72,8 @@ namespace OpenMetaverse
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <seealso cref="T:InternalDictionary"/> Class
|
||||
/// with the specified key/value, has its initial valies copied from the specified
|
||||
/// Initializes a new instance of the <seealso cref="T:InternalDictionary"/> Class
|
||||
/// with the specified key/value, has its initial valies copied from the specified
|
||||
/// <seealso cref="T:System.Collections.Generic.Dictionary"/>
|
||||
/// </summary>
|
||||
/// <param name="dictionary"><seealso cref="T:System.Collections.Generic.Dictionary"/>
|
||||
@@ -82,12 +82,12 @@ namespace OpenMetaverse
|
||||
/// <code>
|
||||
/// // initialize a new InternalDictionary named testAvName with a UUID as the key and an string as the value.
|
||||
/// // populates with copied values from example KeyNameCache Dictionary.
|
||||
///
|
||||
///
|
||||
/// // create source dictionary
|
||||
/// Dictionary<UUID, string> KeyNameCache = new Dictionary<UUID, string>();
|
||||
/// KeyNameCache.Add("8300f94a-7970-7810-cf2c-fc9aa6cdda24", "Jack Avatar");
|
||||
/// KeyNameCache.Add("27ba1e40-13f7-0708-3e98-5819d780bd62", "Jill Avatar");
|
||||
///
|
||||
///
|
||||
/// // Initialize new dictionary.
|
||||
/// public InternalDictionary<UUID, string> testAvName = new InternalDictionary<UUID, string>(KeyNameCache);
|
||||
/// </code>
|
||||
@@ -98,13 +98,13 @@ namespace OpenMetaverse
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <seealso cref="T:OpenMetaverse.InternalDictionary"/> Class
|
||||
/// Initializes a new instance of the <seealso cref="T:OpenMetaverse.InternalDictionary"/> Class
|
||||
/// with the specified key/value, With its initial capacity specified.
|
||||
/// </summary>
|
||||
/// <param name="capacity">Initial size of dictionary</param>
|
||||
/// <example>
|
||||
/// <code>
|
||||
/// // initialize a new InternalDictionary named testDict with a string as the key and an int as the value,
|
||||
/// // initialize a new InternalDictionary named testDict with a string as the key and an int as the value,
|
||||
/// // initially allocated room for 10 entries.
|
||||
/// public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(10);
|
||||
/// </code>
|
||||
@@ -115,7 +115,7 @@ namespace OpenMetaverse
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Try to get entry from <seealso cref="T:OpenMetaverse.InternalDictionary"/> with specified key
|
||||
/// Try to get entry from <seealso cref="T:OpenMetaverse.InternalDictionary"/> with specified key
|
||||
/// </summary>
|
||||
/// <param name="key">Key to use for lookup</param>
|
||||
/// <param name="value">Value returned</param>
|
||||
@@ -176,7 +176,7 @@ namespace OpenMetaverse
|
||||
/// Vector3 pos = prim.Position;
|
||||
/// return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius));
|
||||
/// }
|
||||
/// );
|
||||
/// );
|
||||
///</code>
|
||||
///</example>
|
||||
public List<TValue> FindAll(Predicate<TValue> match)
|
||||
@@ -203,7 +203,7 @@ namespace OpenMetaverse
|
||||
/// delegate(UUID id) {
|
||||
/// return myOtherDict.ContainsKey(id);
|
||||
/// }
|
||||
/// );
|
||||
/// );
|
||||
///</code>
|
||||
///</example>
|
||||
public List<TKey> FindAll(Predicate<TKey> match)
|
||||
@@ -230,7 +230,7 @@ namespace OpenMetaverse
|
||||
/// {
|
||||
/// if (prim.Text != null)
|
||||
/// {
|
||||
/// Console.WriteLine("NAME={0} ID = {1} TEXT = '{2}'",
|
||||
/// Console.WriteLine("NAME={0} ID = {1} TEXT = '{2}'",
|
||||
/// prim.PropertiesFamily.Name, prim.ID, prim.Text);
|
||||
/// }
|
||||
/// });
|
||||
@@ -292,7 +292,7 @@ namespace OpenMetaverse
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds the specified key to the dictionary, dictionary locking is not performed,
|
||||
/// Adds the specified key to the dictionary, dictionary locking is not performed,
|
||||
/// <see cref="SafeAdd"/>
|
||||
/// </summary>
|
||||
/// <param name="key">The key</param>
|
||||
@@ -300,7 +300,7 @@ namespace OpenMetaverse
|
||||
internal void Add(TKey key, TValue value)
|
||||
{
|
||||
lock (Dictionary)
|
||||
Dictionary.Add(key, value);
|
||||
Dictionary[key] = value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<IncludeSymbols>true</IncludeSymbols>
|
||||
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
|
||||
<NoWarn>0419,1574,1591</NoWarn>
|
||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0</TargetFrameworks>
|
||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0;net6.0</TargetFrameworks>
|
||||
<Platforms>x64;x86;AnyCPU</Platforms>
|
||||
<OutputPath>..\bin\</OutputPath>
|
||||
</PropertyGroup>
|
||||
|
||||
@@ -32,26 +32,26 @@ namespace OpenMetaverse
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
///
|
||||
/// </summary>
|
||||
public enum DictionaryEventAction
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
///
|
||||
/// </summary>
|
||||
Add,
|
||||
/// <summary>
|
||||
///
|
||||
///
|
||||
/// </summary>
|
||||
Remove,
|
||||
/// <summary>
|
||||
///
|
||||
///
|
||||
/// </summary>
|
||||
Change
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="action"></param>
|
||||
/// <param name="entry"></param>
|
||||
@@ -80,7 +80,7 @@ namespace OpenMetaverse
|
||||
{
|
||||
if (Delegates.ContainsKey(action))
|
||||
{
|
||||
Delegates[action].Add(callback);
|
||||
Delegates[action].Add(callback);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -105,13 +105,13 @@ namespace OpenMetaverse
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="action"></param>
|
||||
/// <param name="entry"></param>
|
||||
private void FireChangeEvent(DictionaryEventAction action, DictionaryEntry entry)
|
||||
{
|
||||
|
||||
|
||||
if(Delegates.ContainsKey(action))
|
||||
{
|
||||
foreach(DictionaryChangeCallback handler in Delegates[action])
|
||||
@@ -133,7 +133,7 @@ namespace OpenMetaverse
|
||||
public int Count { get { return Dictionary.Count; } }
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <seealso cref="T:ObservableDictionary"/> Class
|
||||
/// Initializes a new instance of the <seealso cref="T:ObservableDictionary"/> Class
|
||||
/// with the specified key/value, has the default initial capacity.
|
||||
/// </summary>
|
||||
/// <example>
|
||||
@@ -149,13 +149,13 @@ namespace OpenMetaverse
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <seealso cref="T:OpenMetaverse.ObservableDictionary"/> Class
|
||||
/// Initializes a new instance of the <seealso cref="T:OpenMetaverse.ObservableDictionary"/> Class
|
||||
/// with the specified key/value, With its initial capacity specified.
|
||||
/// </summary>
|
||||
/// <param name="capacity">Initial size of dictionary</param>
|
||||
/// <example>
|
||||
/// <code>
|
||||
/// // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value,
|
||||
/// // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value,
|
||||
/// // initially allocated room for 10 entries.
|
||||
/// public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(10);
|
||||
/// </code>
|
||||
@@ -167,7 +167,7 @@ namespace OpenMetaverse
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Try to get entry from the <seealso cref="ObservableDictionary"/> with specified key
|
||||
/// Try to get entry from the <seealso cref="ObservableDictionary"/> with specified key
|
||||
/// </summary>
|
||||
/// <param name="key">Key to use for lookup</param>
|
||||
/// <param name="value">Value returned</param>
|
||||
@@ -222,13 +222,13 @@ namespace OpenMetaverse
|
||||
/// Vector3 pos = prim.Position;
|
||||
/// return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius));
|
||||
/// }
|
||||
/// );
|
||||
/// );
|
||||
///</code>
|
||||
///</example>
|
||||
public List<TValue> FindAll(Predicate<TValue> match)
|
||||
{
|
||||
List<TValue> found = new List<TValue>();
|
||||
|
||||
|
||||
foreach (KeyValuePair<TKey, TValue> kvp in Dictionary)
|
||||
{
|
||||
if (match(kvp.Value))
|
||||
@@ -247,19 +247,19 @@ namespace OpenMetaverse
|
||||
/// delegate(UUID id) {
|
||||
/// return myOtherDict.ContainsKey(id);
|
||||
/// }
|
||||
/// );
|
||||
/// );
|
||||
///</code>
|
||||
///</example>
|
||||
public List<TKey> FindAll(Predicate<TKey> match)
|
||||
{
|
||||
List<TKey> found = new List<TKey>();
|
||||
|
||||
|
||||
foreach (KeyValuePair<TKey, TValue> kvp in Dictionary)
|
||||
{
|
||||
if (match(kvp.Key))
|
||||
found.Add(kvp.Key);
|
||||
}
|
||||
|
||||
|
||||
return found;
|
||||
}
|
||||
|
||||
@@ -268,7 +268,7 @@ namespace OpenMetaverse
|
||||
/// <returns><see langword="true"/> if found, <see langword="false"/> otherwise</returns>
|
||||
public bool ContainsKey(TKey key)
|
||||
{
|
||||
return Dictionary.ContainsKey(key);
|
||||
return Dictionary.ContainsKey(key);
|
||||
}
|
||||
|
||||
/// <summary>Check if Value exists in Dictionary</summary>
|
||||
@@ -276,18 +276,18 @@ namespace OpenMetaverse
|
||||
/// <returns><see langword="true"/> if found, <see langword="false"/> otherwise</returns>
|
||||
public bool ContainsValue(TValue value)
|
||||
{
|
||||
return Dictionary.ContainsValue(value);
|
||||
return Dictionary.ContainsValue(value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds the specified key to the dictionary, dictionary locking is not performed,
|
||||
/// Adds the specified key to the dictionary, dictionary locking is not performed,
|
||||
/// <see cref="SafeAdd"/>
|
||||
/// </summary>
|
||||
/// <param name="key">The key</param>
|
||||
/// <param name="value">The value</param>
|
||||
public void Add(TKey key, TValue value)
|
||||
{
|
||||
Dictionary.Add(key, value);
|
||||
Dictionary[key] = value;
|
||||
FireChangeEvent(DictionaryEventAction.Add, new DictionaryEntry(key, value));
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<RootNamespace>LibreMetaverse.PrimMesher</RootNamespace>
|
||||
<AssemblyName>LibreMetaverse.PrimMesher</AssemblyName>
|
||||
<PackageId>LibreMetaverse.PrimMesher</PackageId>
|
||||
<OutputType>Library</OutputType>
|
||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0</TargetFrameworks>
|
||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0;net6.0</TargetFrameworks>
|
||||
<Authors>Dhalia Trimble, Sjofn LLC, OpenMetaverse Developers</Authors>
|
||||
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
|
||||
<IncludeSymbols>true</IncludeSymbols>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup Condition=" '$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows)))' ">
|
||||
<TargetFrameworks>net471;net48;netcoreapp3.1;net5.0-windows</TargetFrameworks>
|
||||
<TargetFrameworks>net471;net48;netcoreapp3.1;net5.0-windows;net6.0-windows</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux)))' ">
|
||||
<TargetFrameworks>netcoreapp3.1</TargetFrameworks>
|
||||
<TargetFrameworks>net471;netcoreapp3.1;net5.0-linux;net6.0-linux</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))' ">
|
||||
<TargetFrameworks>netcoreapp3.1</TargetFrameworks>
|
||||
<TargetFrameworks>net471;netcoreapp3.1;net5.0-osx;net6.0-osx</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<PackageId>Baker</PackageId>
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<AssemblyName>GridProxy</AssemblyName>
|
||||
<PackageId>GridProxy</PackageId>
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>GridProxy</RootNamespace>
|
||||
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
|
||||
<TargetFrameworks>netcoreapp3.1;net5.0</TargetFrameworks>
|
||||
<TargetFrameworks>netcoreapp3.1;net5.0;net6.0</TargetFrameworks>
|
||||
<Platforms>x64;x86</Platforms>
|
||||
<OutputPath>..\..\bin\</OutputPath>
|
||||
<IsPackable>false</IsPackable>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<AssemblyName>VoiceTest</AssemblyName>
|
||||
<OutputType>Exe</OutputType>
|
||||
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
|
||||
<OutputPath>..\..\bin\</OutputPath>
|
||||
<TargetFrameworks>netcoreapp3.1;net5.0</TargetFrameworks>
|
||||
<TargetFrameworks>netcoreapp3.1;net5.0;net6.0</TargetFrameworks>
|
||||
<Platforms>x64;x86;AnyCPU</Platforms>
|
||||
<IsPackable>false</IsPackable>
|
||||
</PropertyGroup>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup Condition=" '$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows)))' ">
|
||||
<TargetFrameworks>net471;net48;netcoreapp3.1;net5.0-windows</TargetFrameworks>
|
||||
<TargetFrameworks>net471;netcoreapp3.1;net5.0-windows;net6.0-windows</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux)))' ">
|
||||
<TargetFrameworks>netcoreapp3.1</TargetFrameworks>
|
||||
<TargetFrameworks>net471;netcoreapp3.1;net5.0-linux;net6.0-linux</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))' ">
|
||||
<TargetFrameworks>netcoreapp3.1</TargetFrameworks>
|
||||
<TargetFrameworks>net471;netcoreapp3.1;net5.0-osx;net6.0-osx</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<PackageId>GridAccountant</PackageId>
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<AssemblyName>IrcGateway</AssemblyName>
|
||||
<PackageId>IrcGateway</PackageId>
|
||||
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
|
||||
<OutputType>Exe</OutputType>
|
||||
<OutputPath>..\..\..\bin\</OutputPath>
|
||||
<TargetFrameworks>netcoreapp3.1;net5.0</TargetFrameworks>
|
||||
<TargetFrameworks>netcoreapp3.1;net5.0;net6.0</TargetFrameworks>
|
||||
<Platforms>x64;x86</Platforms>
|
||||
<IsPackable>false</IsPackable>
|
||||
</PropertyGroup>
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<AssemblyName>PacketDump</AssemblyName>
|
||||
<PackageId>PacketDump</PackageId>
|
||||
<OutputType>Exe</OutputType>
|
||||
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
|
||||
<OutputPath>..\..\..\bin\</OutputPath>
|
||||
<TargetFrameworks>netcoreapp3.1;net5.0</TargetFrameworks>
|
||||
<TargetFrameworks>netcoreapp3.1;net5.0;net6.0</TargetFrameworks>
|
||||
<Platforms>AnyCPU</Platforms>
|
||||
<IncludeSymbols>true</IncludeSymbols>
|
||||
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<OutputType>Exe</OutputType>
|
||||
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
|
||||
<OutputPath>..\..\..\bin\</OutputPath>
|
||||
<TargetFrameworks>netcoreapp3.1;net5.0</TargetFrameworks>
|
||||
<TargetFrameworks>netcoreapp3.1;net5.0;net6.0</TargetFrameworks>
|
||||
<Platforms>x64;x86</Platforms>
|
||||
<IncludeSymbols>true</IncludeSymbols>
|
||||
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<AssemblyName>MapGenerator</AssemblyName>
|
||||
<OutputType>Exe</OutputType>
|
||||
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
|
||||
<OutputPath>..\..\bin\</OutputPath>
|
||||
<PackageId>LibreMetaverse.MapGenerator</PackageId>
|
||||
<TargetFrameworks>netcoreapp3.1;net5.0</TargetFrameworks>
|
||||
<TargetFrameworks>netcoreapp3.1;net5.0;net6.0</TargetFrameworks>
|
||||
<Platforms>AnyCPU</Platforms>
|
||||
<IncludeSymbols>true</IncludeSymbols>
|
||||
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
|
||||
|
||||
37
README.md
37
README.md
@@ -4,21 +4,52 @@
|
||||
| | | '_ \ '_/ -_) |\/| | _| | |/ _ \ V /| _|| /\__ \ _|
|
||||
|_|_|_.__/_| \___|_| |_|___| |_/_/ \_\_/ |___|_|_\|___/___|
|
||||
```
|
||||
LibreMetaverse
|
||||
===============================================================================
|
||||
# LibreMetaverse
|
||||
|
||||
LibreMetaverse is a fork of libOpenMetaverse which in turn was a fork of
|
||||
libSecondLife, a library for developing Second Life-compatible virtual world
|
||||
clients. LibreMetavrse returns the focus to up-to-date Second Life and OpenSim
|
||||
clients. LibreMetaverse returns the focus to up-to-date Second Life and OpenSim
|
||||
compatibility with an eye to performance, multi-threading, and memory management.
|
||||
|
||||
The canonical source for LibreMetaverse can be found at:
|
||||
https://github.com/cinderblocks/libremetaverse
|
||||
|
||||
## Simple installation procedure
|
||||
|
||||
### Linux/macOS
|
||||
|
||||
- Make sure you have at least `dotnet` installed, with a valid net5.0/net6.0 SDK _and_ runtime available!
|
||||
|
||||
- This update includes a solution file to skip the GUI applications (which will run only under Windows anyway). Use `LibreMetaverse.ReleaseNoGUI.sln` instead
|
||||
|
||||
- From the root, run `dotnet restore LibreMetaverse.ReleaseNoGUI.sln`. You should get some errors regarding missing Windows libraries; that's ok, you can ignore those, they're to be expected since Linux/macOS do _not_ include such libraries. Some test applications are Windows-only.
|
||||
If all goes well, you should now have all dependent packages properly installed.
|
||||
|
||||
- From the root, run `dotnet msbuild LibreMetaverse.ReleaseNoGUI.sln`, and enjoy the superfast Roslyn compiler at work 😄 It should finish after a few minutes, depending on the speed of your machine.
|
||||
|
||||
- Your binaries will be under `../bin/net5.0` or `../bin/net6.0` (there might be a few more directories under `../bin`), depending on what runtimes you have installed on your system. Make sure you `cd` to the correct directory depending on the runtime you have, and then search for all your binaries there: they should be normal-looking executable files (with the `x` attribute set) and having the name of the appropriate test application (e.g. `TestClient` for the interactive testing tool).
|
||||
|
||||
- Unlike OpenSimulator, you don't need to launch the binaries with Mono, they're _directly_ executable; the `dotnet` chain already embeds the small runtime that allows .NET apps to run natively on whatever operating system you've got.
|
||||
|
||||
### Windows
|
||||
|
||||
For Windows, you should use the default `LibreMetaverse.sln`, just as before (untested). For command-line compilation under Windows, if you wish to skip the GUI applications, the instructions are the same as above. Use the default `LibreMetaverse.sln` if you wish to install those as well.
|
||||
|
||||
### GUI support under Linux/macOS
|
||||
|
||||
Currently unavailable, although there are some reports that this might be possible using a Windows emulator, such as Mono itself, or possibly Wine. This will require some project configuration changes, and was _not_ tested!
|
||||
|
||||
## Note: end-of-life support for .NET 5.0
|
||||
|
||||
Microsoft is [dropping support for .NET 5.0](https://devblogs.microsoft.com/dotnet/dotnet-5-end-of-support-update/) as of May 2022, so you should consider using .NET 6.0 instead (or, if you're wild, you can test the prerelease of .NET 7.0). The code runs flawlessly on .NET 6.0 as well (Windows GUI version untested)
|
||||
|
||||
[](https://www.nuget.org/packages/LibreMetaverse/)
|
||||
[](https://www.nuget.org/packages/LibreMetaverse/)
|
||||
[](https://ci.appveyor.com/project/cinderblocks57647/libremetaverse-ksbcr)
|
||||
[](https://ci.appveyor.com/project/cinderblocks57647/libremetaverse-ksbcr)
|
||||
[](https://www.codacy.com/gh/cinderblocks/libremetaverse/dashboard?utm_source=github.com&utm_medium=referral&utm_content=cinderblocks/libremetaverse&utm_campaign=Badge_Grade)
|
||||
[](https://github.com/cinderblocks/libremetaverse/actions/workflows/dotnet.yml)
|
||||
[](https://github.com/cinderblocks/libremetaverse/actions/workflows/codeql-analysis.yml)
|
||||
[](https://github.com/cinderblocks/libremetaverse/blob/master/LICENSE.txt)
|
||||
[](https://www.github.com/cinderblocks/libremetaverse/)
|
||||
[](https://keybase.io/cinder) [](https://keybase.io/cinder)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"sdk": {
|
||||
"version": "5.0.101",
|
||||
"rollForward": "latestMajor"
|
||||
"version": "6.0.100",
|
||||
"rollForward": "latestMinor"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user