From 1c54b75da587e1080d9be9e4d98153e51d12460a Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Fri, 12 Jan 2024 23:22:01 +0100 Subject: [PATCH] Dependency update / fixes / skrungle bungle (#23745) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Give .props files 2-space indents. * Move to Central Package Management. Allows us to store NuGet package versions all in one place. Yay! * Update NuGet packages and fix code for changes. Notable: Changes to ILVerify. Npgsql doesn't need hacks for inet anymore, now we need hacks to make the old code work with this new reality. NUnit's analyzers are already complaining and I didn't even update it to 4.x yet. TerraFX changed to GetLastSystemError so error handling had to be changed. Buncha APIs have more NRT annotations. * Remove dotnet-eng NuGet package source. I genuinely don't know what this was for, and Central Package Management starts throwing warnings about it, so YEET. * Remove Robust.Physics project. Never used. * Remove erroneous NVorbis reference. Should be VorbisPizza and otherwise wasn't used. * Sandbox fixes * Remove unused unit test package references. Castle.Core and NUnit.ConsoleRunner. * Update NUnit to 4.0.1 This requires replacing all the old assertion methods because they removed them 🥲 * Oh so that's what dotnet-eng was used for. Yeah ok that makes sense. * Add Robust.Analyzers.Test * Update submodule * commit to re-run CI (cherry picked from commit a6c9c36b688a1ba78ff4c12502e81661cf607b6c) --- .editorconfig | 5 +- Content.Benchmarks/Content.Benchmarks.csproj | 2 +- Content.Client/Content.Client.csproj | 4 +- .../Content.IntegrationTests.csproj | 6 +- .../Pair/TestPair.Recycle.cs | 12 +- Content.IntegrationTests/PoolManager.cs | 4 +- .../Tests/Actions/ActionsAddedTest.cs | 6 +- .../Tests/Buckle/BuckleTest.cs | 2 +- .../Tests/DeviceNetwork/DeviceNetworkTest.cs | 8 +- .../Tests/Minds/GhostRoleTests.cs | 10 +- .../Minds/MindTest.DeleteAllThenGhost.cs | 4 +- .../Tests/Minds/MindTests.ReconnectTests.cs | 10 +- .../Tests/PostMapInitTest.cs | 2 +- .../Tests/Preferences/ServerDbSqliteTests.cs | 2 +- .../Tests/Serialization/SerializationTest.cs | 2 +- .../Tests/Toolshed/ToolshedTest.cs | 4 +- .../Content.MapRenderer.csproj | 4 +- Content.MapRenderer/Painters/EntityPainter.cs | 2 +- Content.Packaging/Content.Packaging.csproj | 3 - .../Content.PatreonParser.csproj | 3 +- Content.Replay/Content.Replay.csproj | 4 +- .../Content.Server.Database.csproj | 12 +- Content.Server.Database/Model.cs | 8 +- Content.Server.Database/ModelPostgres.cs | 2 - Content.Server.Database/ModelSqlite.cs | 11 +- Content.Server.Database/NpgsqlTypeMapping.cs | 68 ------ .../EntitySystems/GasTileOverlaySystem.cs | 2 +- Content.Server/Content.Server.csproj | 2 +- Content.Server/Database/ServerDbPostgres.cs | 9 +- Content.Server/Database/ServerDbSqlite.cs | 12 +- Content.Server/IP/IPAddressExt.cs | 23 +++ Content.Shared/Atmos/GasOverlayChunk.cs | 59 +++--- Content.Shared/Content.Shared.csproj | 2 +- Content.Tests/Content.Tests.csproj | 7 +- .../Alert/ServerAlertsComponentTests.cs | 2 +- .../Shared/DirectionRandomizerTest.cs | 2 +- .../Shared/Utility/RandomExtensionsTests.cs | 2 +- Content.Tools/Content.Tools.csproj | 2 +- Content.YAMLLinter/Content.YAMLLinter.csproj | 2 +- Directory.Packages.props | 19 ++ Pow3r/Pow3r.csproj | 8 +- RobustToolbox | 2 +- SpaceStation14.sln | 194 +++++++++--------- nuget.config | 8 + 44 files changed, 265 insertions(+), 292 deletions(-) delete mode 100644 Content.Server.Database/NpgsqlTypeMapping.cs create mode 100644 Directory.Packages.props diff --git a/.editorconfig b/.editorconfig index 59ca35cc9a5..872a068c7c6 100644 --- a/.editorconfig +++ b/.editorconfig @@ -338,7 +338,10 @@ dotnet_naming_symbols.type_parameters_symbols.applicable_kinds = type_parameter resharper_braces_for_ifelse = required_for_multiline resharper_keep_existing_attribute_arrangement = true -[*.{csproj,xml,yml,yaml,dll.config,msbuildproj,targets}] +[*.{csproj,xml,yml,yaml,dll.config,msbuildproj,targets,props}] +indent_size = 2 + +[nuget.config] indent_size = 2 [{*.yaml,*.yml}] diff --git a/Content.Benchmarks/Content.Benchmarks.csproj b/Content.Benchmarks/Content.Benchmarks.csproj index 049d6f5b6f4..c3b60a1c69d 100644 --- a/Content.Benchmarks/Content.Benchmarks.csproj +++ b/Content.Benchmarks/Content.Benchmarks.csproj @@ -11,7 +11,7 @@ 12 - + diff --git a/Content.Client/Content.Client.csproj b/Content.Client/Content.Client.csproj index 33ee0e0a34d..0e15fadfae3 100644 --- a/Content.Client/Content.Client.csproj +++ b/Content.Client/Content.Client.csproj @@ -13,8 +13,8 @@ AnyCPU - - + + diff --git a/Content.IntegrationTests/Content.IntegrationTests.csproj b/Content.IntegrationTests/Content.IntegrationTests.csproj index 5f2a5b0cebb..ec93a47041d 100644 --- a/Content.IntegrationTests/Content.IntegrationTests.csproj +++ b/Content.IntegrationTests/Content.IntegrationTests.csproj @@ -8,9 +8,9 @@ 11 - - - + + + diff --git a/Content.IntegrationTests/Pair/TestPair.Recycle.cs b/Content.IntegrationTests/Pair/TestPair.Recycle.cs index c9796c0079e..872af8334fb 100644 --- a/Content.IntegrationTests/Pair/TestPair.Recycle.cs +++ b/Content.IntegrationTests/Pair/TestPair.Recycle.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.IO; using System.Linq; using Content.Server.GameTicking; @@ -203,17 +203,17 @@ public void ValidateSettings(PoolSettings settings) if (settings.InLobby) { - Assert.Null(session.AttachedEntity); + Assert.That(session.AttachedEntity, Is.Null); return; } - Assert.NotNull(session.AttachedEntity); + Assert.That(session.AttachedEntity, Is.Not.Null); Assert.That(entMan.EntityExists(session.AttachedEntity)); Assert.That(entMan.HasComponent(session.AttachedEntity)); var mindCont = entMan.GetComponent(session.AttachedEntity!.Value); - Assert.NotNull(mindCont.Mind); - Assert.True(entMan.TryGetComponent(mindCont.Mind, out MindComponent? mind)); - Assert.Null(mind!.VisitingEntity); + Assert.That(mindCont.Mind, Is.Not.Null); + Assert.That(entMan.TryGetComponent(mindCont.Mind, out MindComponent? mind)); + Assert.That(mind!.VisitingEntity, Is.Null); Assert.That(mind.OwnedEntity, Is.EqualTo(session.AttachedEntity!.Value)); Assert.That(mind.UserId, Is.EqualTo(session.UserId)); } diff --git a/Content.IntegrationTests/PoolManager.cs b/Content.IntegrationTests/PoolManager.cs index 03ebf49a9b2..6046ed65e44 100644 --- a/Content.IntegrationTests/PoolManager.cs +++ b/Content.IntegrationTests/PoolManager.cs @@ -337,10 +337,10 @@ private static void DieIfPoolFailure() { // If the _poolFailureReason is not null, we can assume at least one test failed. // So we say inconclusive so we don't add more failed tests to search through. - Assert.Inconclusive(@" + Assert.Inconclusive(@$" In a different test, the pool manager had an exception when trying to create a server/client pair. Instead of risking that the pool manager will fail at creating a server/client pairs for every single test, -we are just going to end this here to save a lot of time. This is the exception that started this:\n {0}", _poolFailureReason); +we are just going to end this here to save a lot of time. This is the exception that started this:\n {_poolFailureReason}"); } if (_dead) diff --git a/Content.IntegrationTests/Tests/Actions/ActionsAddedTest.cs b/Content.IntegrationTests/Tests/Actions/ActionsAddedTest.cs index 01daeea93c5..913dcf4a40a 100644 --- a/Content.IntegrationTests/Tests/Actions/ActionsAddedTest.cs +++ b/Content.IntegrationTests/Tests/Actions/ActionsAddedTest.cs @@ -29,7 +29,7 @@ public async Task TestCombatActionsAdded() var cActionSystem = client.System(); // Dummy ticker is disabled - client should be in control of a normal mob. - Assert.NotNull(serverSession.AttachedEntity); + Assert.That(serverSession.AttachedEntity, Is.Not.Null); var serverEnt = serverSession.AttachedEntity!.Value; var clientEnt = clientSession!.AttachedEntity!.Value; Assert.That(sEntMan.EntityExists(serverEnt)); @@ -57,8 +57,8 @@ public async Task TestCombatActionsAdded() var sAct = sActions[0].Comp; var cAct = cActions[0].Comp; - Assert.NotNull(sAct); - Assert.NotNull(cAct); + Assert.That(sAct, Is.Not.Null); + Assert.That(cAct, Is.Not.Null); // Finally, these two actions are not the same object // required, because integration tests do not respect the [NonSerialized] attribute and will simply events by reference. diff --git a/Content.IntegrationTests/Tests/Buckle/BuckleTest.cs b/Content.IntegrationTests/Tests/Buckle/BuckleTest.cs index 370ffd2e239..739bd549061 100644 --- a/Content.IntegrationTests/Tests/Buckle/BuckleTest.cs +++ b/Content.IntegrationTests/Tests/Buckle/BuckleTest.cs @@ -111,7 +111,7 @@ await server.WaitAssertion(() => // Side effects of buckling for the strap Assert.That(strap.BuckledEntities, Does.Contain(human)); Assert.That(strap.OccupiedSize, Is.EqualTo(buckle.Size)); - Assert.Positive(strap.OccupiedSize); + Assert.That(strap.OccupiedSize, Is.Positive); }); #pragma warning disable NUnit2045 // Interdependent asserts. diff --git a/Content.IntegrationTests/Tests/DeviceNetwork/DeviceNetworkTest.cs b/Content.IntegrationTests/Tests/DeviceNetwork/DeviceNetworkTest.cs index 0bc123cdbfa..1d994624a6d 100644 --- a/Content.IntegrationTests/Tests/DeviceNetwork/DeviceNetworkTest.cs +++ b/Content.IntegrationTests/Tests/DeviceNetwork/DeviceNetworkTest.cs @@ -103,7 +103,7 @@ await server.WaitAssertion(() => await server.WaitAssertion(() => { - CollectionAssert.AreEquivalent(deviceNetTestSystem.LastPayload, payload); + Assert.That(payload, Is.EquivalentTo(deviceNetTestSystem.LastPayload)); }); await pair.CleanReturnAsync(); } @@ -170,7 +170,7 @@ await server.WaitAssertion(() => await server.WaitAssertion(() => { - CollectionAssert.AreEqual(deviceNetTestSystem.LastPayload, payload); + Assert.That(payload, Is.EqualTo(deviceNetTestSystem.LastPayload).AsCollection); payload = new NetworkPayload { @@ -187,7 +187,7 @@ await server.WaitAssertion(() => await server.WaitAssertion(() => { - CollectionAssert.AreNotEqual(deviceNetTestSystem.LastPayload, payload); + Assert.That(payload, Is.Not.EqualTo(deviceNetTestSystem.LastPayload).AsCollection); }); await pair.CleanReturnAsync(); @@ -270,7 +270,7 @@ await server.WaitAssertion(() => await server.WaitAssertion(() => { - CollectionAssert.AreEqual(deviceNetTestSystem.LastPayload, payload); + Assert.That(payload, Is.EqualTo(deviceNetTestSystem.LastPayload).AsCollection); }); await pair.CleanReturnAsync(); diff --git a/Content.IntegrationTests/Tests/Minds/GhostRoleTests.cs b/Content.IntegrationTests/Tests/Minds/GhostRoleTests.cs index 22a185798e9..ca97e435a7f 100644 --- a/Content.IntegrationTests/Tests/Minds/GhostRoleTests.cs +++ b/Content.IntegrationTests/Tests/Minds/GhostRoleTests.cs @@ -60,7 +60,7 @@ await server.WaitPost(() => Assert.That(session.AttachedEntity, Is.EqualTo(originalMob)); var originalMind = entMan.GetComponent(originalMindId); Assert.That(originalMind.OwnedEntity, Is.EqualTo(originalMob)); - Assert.Null(originalMind.VisitingEntity); + Assert.That(originalMind.VisitingEntity, Is.Null); // Use the ghost command conHost.ExecuteCommand("ghost"); @@ -90,11 +90,11 @@ await server.WaitPost(() => Assert.That(newMindId, Is.Not.EqualTo(originalMindId)); Assert.That(session.AttachedEntity, Is.EqualTo(ghostRole)); Assert.That(newMind.OwnedEntity, Is.EqualTo(ghostRole)); - Assert.Null(newMind.VisitingEntity); + Assert.That(newMind.VisitingEntity, Is.Null); // Original mind should be unaffected, but the ghost will have deleted itself. Assert.That(originalMind.OwnedEntity, Is.EqualTo(originalMob)); - Assert.Null(originalMind.VisitingEntity); + Assert.That(originalMind.VisitingEntity, Is.Null); Assert.That(entMan.Deleted(ghost)); // Ghost again. @@ -113,11 +113,11 @@ await server.WaitPost(() => await pair.RunTicksSync(10); Assert.That(session.AttachedEntity, Is.EqualTo(originalMob)); Assert.That(originalMind.OwnedEntity, Is.EqualTo(originalMob)); - Assert.Null(originalMind.VisitingEntity); + Assert.That(originalMind.VisitingEntity, Is.Null); // the ghost-role mind is unaffected, though the ghost will have deleted itself Assert.That(newMind.OwnedEntity, Is.EqualTo(ghostRole)); - Assert.Null(newMind.VisitingEntity); + Assert.That(newMind.VisitingEntity, Is.Null); Assert.That(entMan.Deleted(otherGhost)); await pair.CleanReturnAsync(); diff --git a/Content.IntegrationTests/Tests/Minds/MindTest.DeleteAllThenGhost.cs b/Content.IntegrationTests/Tests/Minds/MindTest.DeleteAllThenGhost.cs index 0c9bfbfc743..980559cc817 100644 --- a/Content.IntegrationTests/Tests/Minds/MindTest.DeleteAllThenGhost.cs +++ b/Content.IntegrationTests/Tests/Minds/MindTest.DeleteAllThenGhost.cs @@ -36,8 +36,8 @@ public async Task DeleteAllThenGhost() await pair.RunTicksSync(5); // Client is not attached to anything - Assert.Null(pair.Client.Player?.ControlledEntity); - Assert.Null(pair.PlayerData?.Mind); + Assert.That(pair.Client.Player?.ControlledEntity, Is.Null); + Assert.That(pair.PlayerData?.Mind, Is.Null); // Attempt to ghost var cConHost = pair.Client.ResolveDependency(); diff --git a/Content.IntegrationTests/Tests/Minds/MindTests.ReconnectTests.cs b/Content.IntegrationTests/Tests/Minds/MindTests.ReconnectTests.cs index d31d5f9262d..a1fccfb68db 100644 --- a/Content.IntegrationTests/Tests/Minds/MindTests.ReconnectTests.cs +++ b/Content.IntegrationTests/Tests/Minds/MindTests.ReconnectTests.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.Ghost; using Content.Shared.Mind; using Robust.Server.Player; @@ -127,7 +127,7 @@ public async Task TestVisitingReconnect() var mindSys = entMan.System(); var mind = GetMind(pair); - Assert.Null(mind.Comp.VisitingEntity); + Assert.That(mind.Comp.VisitingEntity, Is.Null); // Make player visit a new mob var original = mind.Comp.OwnedEntity; @@ -165,8 +165,8 @@ public async Task TestReconnect() await using var pair = await SetupPair(); var mind = GetMind(pair); - Assert.Null(mind.Comp.VisitingEntity); - Assert.NotNull(mind.Comp.OwnedEntity); + Assert.That(mind.Comp.VisitingEntity, Is.Null); + Assert.That(mind.Comp.OwnedEntity, Is.Not.Null); var entity = mind.Comp.OwnedEntity; await pair.RunTicksSync(5); @@ -175,7 +175,7 @@ public async Task TestReconnect() var newMind = GetMind(pair); - Assert.Null(newMind.Comp.VisitingEntity); + Assert.That(newMind.Comp.VisitingEntity, Is.Null); Assert.That(newMind.Comp.OwnedEntity, Is.EqualTo(entity)); Assert.That(newMind.Id, Is.EqualTo(mind.Id)); diff --git a/Content.IntegrationTests/Tests/PostMapInitTest.cs b/Content.IntegrationTests/Tests/PostMapInitTest.cs index 2e2803cf69c..51a2381ccdd 100644 --- a/Content.IntegrationTests/Tests/PostMapInitTest.cs +++ b/Content.IntegrationTests/Tests/PostMapInitTest.cs @@ -305,7 +305,7 @@ public async Task AllMapsTested() Assert.That(gameMaps.Remove(PoolManager.TestMap)); - CollectionAssert.AreEquivalent(GameMaps.ToHashSet(), gameMaps, "Game map prototype missing from test cases."); + Assert.That(gameMaps, Is.EquivalentTo(GameMaps.ToHashSet()), "Game map prototype missing from test cases."); await pair.CleanReturnAsync(); } diff --git a/Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs b/Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs index 1bc2885e97b..e26a45291b2 100644 --- a/Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs +++ b/Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs @@ -83,7 +83,7 @@ public async Task TestUserDoesNotExist() var pair = await PoolManager.GetServerClient(); var db = GetDb(pair.Server); // Database should be empty so a new GUID should do it. - Assert.Null(await db.GetPlayerPreferencesAsync(NewUserId())); + Assert.That(await db.GetPlayerPreferencesAsync(NewUserId()), Is.Null); await pair.CleanReturnAsync(); } diff --git a/Content.IntegrationTests/Tests/Serialization/SerializationTest.cs b/Content.IntegrationTests/Tests/Serialization/SerializationTest.cs index d2e3eb936b7..052ea997c0d 100644 --- a/Content.IntegrationTests/Tests/Serialization/SerializationTest.cs +++ b/Content.IntegrationTests/Tests/Serialization/SerializationTest.cs @@ -26,7 +26,7 @@ public async Task SerializeGenericEnums() var node = seriMan.WriteValue(value, notNullableOverride:true); var valueNode = node as ValueDataNode; - Assert.NotNull(valueNode); + Assert.That(valueNode, Is.Not.Null); var expected = refMan.GetEnumReference(value); Assert.That(valueNode!.Value, Is.EqualTo(expected)); diff --git a/Content.IntegrationTests/Tests/Toolshed/ToolshedTest.cs b/Content.IntegrationTests/Tests/Toolshed/ToolshedTest.cs index 1c9abc96320..dd68ff1ccf1 100644 --- a/Content.IntegrationTests/Tests/Toolshed/ToolshedTest.cs +++ b/Content.IntegrationTests/Tests/Toolshed/ToolshedTest.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Collections.Generic; using Content.IntegrationTests.Pair; using Content.Server.Administration.Managers; @@ -38,7 +38,7 @@ public async Task TearDownInternal() protected virtual async Task TearDown() { - Assert.IsEmpty(_expectedErrors); + Assert.That(_expectedErrors, Is.Empty); ClearErrors(); } diff --git a/Content.MapRenderer/Content.MapRenderer.csproj b/Content.MapRenderer/Content.MapRenderer.csproj index f181f5620cd..43207177322 100644 --- a/Content.MapRenderer/Content.MapRenderer.csproj +++ b/Content.MapRenderer/Content.MapRenderer.csproj @@ -13,8 +13,8 @@ - - + + diff --git a/Content.MapRenderer/Painters/EntityPainter.cs b/Content.MapRenderer/Painters/EntityPainter.cs index de6b98711f2..808acf8fe4c 100644 --- a/Content.MapRenderer/Painters/EntityPainter.cs +++ b/Content.MapRenderer/Painters/EntityPainter.cs @@ -115,7 +115,7 @@ public void Run(Image canvas, EntityData entity, SharedTransformSystem xformSyst var (x, y, width, height) = GetRsiFrame(rsi, image, entity, layer, dir); var rect = new Rectangle(x, y, width, height); - if (!new Rectangle(Point.Empty, image.Size()).Contains(rect)) + if (!new Rectangle(Point.Empty, image.Size).Contains(rect)) { Console.WriteLine($"Invalid layer {rsi!.Path}/{layer.RsiState.Name}.png for entity {_sEntityManager.ToPrettyString(entity.Owner)} at ({entity.X}, {entity.Y})"); return; diff --git a/Content.Packaging/Content.Packaging.csproj b/Content.Packaging/Content.Packaging.csproj index dcbac5066db..9823e40b8e3 100644 --- a/Content.Packaging/Content.Packaging.csproj +++ b/Content.Packaging/Content.Packaging.csproj @@ -6,9 +6,6 @@ True - - - diff --git a/Content.PatreonParser/Content.PatreonParser.csproj b/Content.PatreonParser/Content.PatreonParser.csproj index 53b06b265b6..3206ad42e9d 100644 --- a/Content.PatreonParser/Content.PatreonParser.csproj +++ b/Content.PatreonParser/Content.PatreonParser.csproj @@ -5,10 +5,11 @@ net7.0 enable enable + true - + diff --git a/Content.Replay/Content.Replay.csproj b/Content.Replay/Content.Replay.csproj index 5d5880f23a7..4b3c85345cf 100644 --- a/Content.Replay/Content.Replay.csproj +++ b/Content.Replay/Content.Replay.csproj @@ -10,8 +10,8 @@ enable - - + + diff --git a/Content.Server.Database/Content.Server.Database.csproj b/Content.Server.Database/Content.Server.Database.csproj index 42f081d73e4..31ab785c18e 100644 --- a/Content.Server.Database/Content.Server.Database.csproj +++ b/Content.Server.Database/Content.Server.Database.csproj @@ -1,4 +1,4 @@ - + $(TargetFramework) @@ -12,16 +12,16 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive all - - + + - - + + diff --git a/Content.Server.Database/Model.cs b/Content.Server.Database/Model.cs index a6b51072453..a522d9994e7 100644 --- a/Content.Server.Database/Model.cs +++ b/Content.Server.Database/Model.cs @@ -7,6 +7,7 @@ using System.Text.Json; using Content.Shared.Database; using Microsoft.EntityFrameworkCore; +using NpgsqlTypes; namespace Content.Server.Database { @@ -550,7 +551,7 @@ public interface IBanCommon where TUnban : IUnbanCommon { int Id { get; set; } Guid? PlayerUserId { get; set; } - (IPAddress, int)? Address { get; set; } + NpgsqlInet? Address { get; set; } byte[]? HWId { get; set; } DateTime BanTime { get; set; } DateTime? ExpirationTime { get; set; } @@ -618,8 +619,7 @@ public class ServerBan : IBanCommon /// /// CIDR IP address range of the ban. The whole range can match the ban. /// - [Column(TypeName = "inet")] - public (IPAddress, int)? Address { get; set; } + public NpgsqlInet? Address { get; set; } /// /// Hardware ID of the banned player. @@ -808,7 +808,7 @@ public sealed class ServerRoleBan : IBanCommon public Round? Round { get; set; } public Guid? PlayerUserId { get; set; } [Required] public TimeSpan PlaytimeAtNote { get; set; } - [Column(TypeName = "inet")] public (IPAddress, int)? Address { get; set; } + public NpgsqlInet? Address { get; set; } public byte[]? HWId { get; set; } public DateTime BanTime { get; set; } diff --git a/Content.Server.Database/ModelPostgres.cs b/Content.Server.Database/ModelPostgres.cs index 6b1278285e7..a6b1856ab17 100644 --- a/Content.Server.Database/ModelPostgres.cs +++ b/Content.Server.Database/ModelPostgres.cs @@ -21,8 +21,6 @@ public PostgresServerDbContext(DbContextOptions options protected override void OnConfiguring(DbContextOptionsBuilder options) { - options.ReplaceService(); - ((IDbContextOptionsBuilderInfrastructure) options).AddOrUpdateExtension(new SnakeCaseExtension()); options.ConfigureWarnings(x => diff --git a/Content.Server.Database/ModelSqlite.cs b/Content.Server.Database/ModelSqlite.cs index 9f9654792f4..392a7c0aae7 100644 --- a/Content.Server.Database/ModelSqlite.cs +++ b/Content.Server.Database/ModelSqlite.cs @@ -9,6 +9,7 @@ using Microsoft.EntityFrameworkCore.Diagnostics; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using NpgsqlTypes; namespace Content.Server.Database { @@ -48,8 +49,8 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) .Property(p => p.LastSeenAddress) .HasConversion(ipConverter); - var ipMaskConverter = new ValueConverter<(IPAddress address, int mask), string>( - v => InetToString(v.address, v.mask), + var ipMaskConverter = new ValueConverter( + v => InetToString(v.Address, v.Netmask), v => StringToInet(v) ); @@ -98,11 +99,11 @@ private static string InetToString(IPAddress address, int mask) { return $"{address}/{mask}"; } - private static (IPAddress, int) StringToInet(string inet) { + private static NpgsqlInet StringToInet(string inet) { var idx = inet.IndexOf('/', StringComparison.Ordinal); - return ( + return new NpgsqlInet( IPAddress.Parse(inet.AsSpan(0, idx)), - int.Parse(inet.AsSpan(idx + 1), provider: CultureInfo.InvariantCulture) + byte.Parse(inet.AsSpan(idx + 1), provider: CultureInfo.InvariantCulture) ); } diff --git a/Content.Server.Database/NpgsqlTypeMapping.cs b/Content.Server.Database/NpgsqlTypeMapping.cs deleted file mode 100644 index beea67e9785..00000000000 --- a/Content.Server.Database/NpgsqlTypeMapping.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System.Linq.Expressions; -using System.Net; -using System.Reflection; -using Microsoft.EntityFrameworkCore.Storage; -using Npgsql.EntityFrameworkCore.PostgreSQL.Infrastructure.Internal; -using Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal; -using Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.Mapping; - -#pragma warning disable EF1001 -namespace Content.Server.Database -{ - // Taken from https://github.com/npgsql/efcore.pg/issues/1158 - // To support inet -> (IPAddress, int) mapping. - public class CustomNpgsqlTypeMappingSource : NpgsqlTypeMappingSource - { - public CustomNpgsqlTypeMappingSource( - TypeMappingSourceDependencies dependencies, - RelationalTypeMappingSourceDependencies relationalDependencies, - ISqlGenerationHelper sqlGenerationHelper, - INpgsqlSingletonOptions npgsqlOptions) - : base(dependencies, relationalDependencies, sqlGenerationHelper, npgsqlOptions) - { - StoreTypeMappings["inet"] = - new RelationalTypeMapping[] - { - new NpgsqlInetWithMaskTypeMapping(), - new NpgsqlInetTypeMapping() - }; - } - } - - // Basically copied from NpgsqlCidrTypeMapping - public class NpgsqlInetWithMaskTypeMapping : NpgsqlTypeMapping - { - public NpgsqlInetWithMaskTypeMapping() : base("inet", typeof((IPAddress, int)), NpgsqlTypes.NpgsqlDbType.Inet) - { - } - - protected NpgsqlInetWithMaskTypeMapping(RelationalTypeMappingParameters parameters) - : base(parameters, NpgsqlTypes.NpgsqlDbType.Inet) - { - } - - protected override RelationalTypeMapping Clone(RelationalTypeMappingParameters parameters) - { - return new NpgsqlInetWithMaskTypeMapping(parameters); - } - - protected override string GenerateNonNullSqlLiteral(object value) - { - var (address, subnet) = ((IPAddress, int)) value; - return $"INET '{address}/{subnet}'"; - } - - public override Expression GenerateCodeLiteral(object value) - { - var (address, subnet) = ((IPAddress, int)) value; - return Expression.New( - Constructor, - Expression.Call(ParseMethod, Expression.Constant(address.ToString())), - Expression.Constant(subnet)); - } - - private static readonly MethodInfo ParseMethod = typeof(IPAddress).GetMethod("Parse", new[] {typeof(string)})!; - private static readonly ConstructorInfo Constructor = - typeof((IPAddress, int)).GetConstructor(new[] {typeof(IPAddress), typeof(int)})!; - } -} diff --git a/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs b/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs index 201185d6f6b..c0fc1896e3f 100644 --- a/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs +++ b/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs @@ -196,7 +196,7 @@ public GasOverlayData GetOverlayData(GasMixture? mixture) /// private bool UpdateChunkTile(GridAtmosphereComponent gridAtmosphere, GasOverlayChunk chunk, Vector2i index, GameTick curTick) { - ref var oldData = ref chunk.GetData(index); + ref var oldData = ref chunk.TileData[chunk.GetDataIndex(index)]; if (!gridAtmosphere.Tiles.TryGetValue(index, out var tile)) { if (oldData.Equals(default)) diff --git a/Content.Server/Content.Server.csproj b/Content.Server/Content.Server.csproj index 3aba36c788d..96d642e4f2f 100644 --- a/Content.Server/Content.Server.csproj +++ b/Content.Server/Content.Server.csproj @@ -14,7 +14,7 @@ true - + diff --git a/Content.Server/Database/ServerDbPostgres.cs b/Content.Server/Database/ServerDbPostgres.cs index 4af3c6e2ede..8a8f26e503b 100644 --- a/Content.Server/Database/ServerDbPostgres.cs +++ b/Content.Server/Database/ServerDbPostgres.cs @@ -7,6 +7,7 @@ using System.Threading; using System.Threading.Tasks; using Content.Server.Administration.Logs; +using Content.Server.IP; using Content.Shared.CCVar; using Microsoft.EntityFrameworkCore; using Robust.Shared.Configuration; @@ -196,7 +197,7 @@ private static IQueryable MakeBanLookupQuery( return new ServerBanDef( ban.Id, uid, - ban.Address, + ban.Address.ToTuple(), ban.HWId == null ? null : ImmutableArray.Create(ban.HWId), ban.BanTime, ban.ExpirationTime, @@ -233,7 +234,7 @@ public override async Task AddServerBanAsync(ServerBanDef serverBan) db.PgDbContext.Ban.Add(new ServerBan { - Address = serverBan.Address, + Address = serverBan.Address.ToNpgsqlInet(), HWId = serverBan.HWId?.ToArray(), Reason = serverBan.Reason, Severity = serverBan.Severity, @@ -385,7 +386,7 @@ private static IQueryable MakeRoleBanLookupQuery( return new ServerRoleBanDef( ban.Id, uid, - ban.Address, + ban.Address.ToTuple(), ban.HWId == null ? null : ImmutableArray.Create(ban.HWId), ban.BanTime, ban.ExpirationTime, @@ -423,7 +424,7 @@ public override async Task AddServerRoleBanAsync(ServerRoleBan var ban = new ServerRoleBan { - Address = serverRoleBan.Address, + Address = serverRoleBan.Address.ToNpgsqlInet(), HWId = serverRoleBan.HWId?.ToArray(), Reason = serverRoleBan.Reason, Severity = serverRoleBan.Severity, diff --git a/Content.Server/Database/ServerDbSqlite.cs b/Content.Server/Database/ServerDbSqlite.cs index 1bcea6b1703..90bbec023a8 100644 --- a/Content.Server/Database/ServerDbSqlite.cs +++ b/Content.Server/Database/ServerDbSqlite.cs @@ -139,7 +139,7 @@ private static bool BanMatches(ServerBan ban, ServerBanExemptFlags? exemptFlags) { if (!exemptFlags.GetValueOrDefault(ServerBanExemptFlags.None).HasFlag(ServerBanExemptFlags.IP) - && address != null && ban.Address is not null && address.IsInSubnet(ban.Address.Value)) + && address != null && ban.Address is not null && address.IsInSubnet(ban.Address.ToTuple().Value)) { return true; } @@ -158,7 +158,7 @@ public override async Task AddServerBanAsync(ServerBanDef serverBan) db.SqliteDbContext.Ban.Add(new ServerBan { - Address = serverBan.Address, + Address = serverBan.Address.ToNpgsqlInet(), Reason = serverBan.Reason, Severity = serverBan.Severity, BanningAdmin = serverBan.BanningAdmin?.UserId, @@ -239,7 +239,7 @@ private static bool RoleBanMatches( NetUserId? userId, ImmutableArray? hwId) { - if (address != null && ban.Address is not null && address.IsInSubnet(ban.Address.Value)) + if (address != null && ban.Address is not null && address.IsInSubnet(ban.Address.ToTuple().Value)) { return true; } @@ -258,7 +258,7 @@ public override async Task AddServerRoleBanAsync(ServerRoleBan var ban = new ServerRoleBan { - Address = serverBan.Address, + Address = serverBan.Address.ToNpgsqlInet(), Reason = serverBan.Reason, Severity = serverBan.Severity, BanningAdmin = serverBan.BanningAdmin?.UserId, @@ -315,7 +315,7 @@ public override async Task AddServerRoleUnbanAsync(ServerRoleUnbanDef serverUnba return new ServerRoleBanDef( ban.Id, uid, - ban.Address, + ban.Address.ToTuple(), ban.HWId == null ? null : ImmutableArray.Create(ban.HWId), // SQLite apparently always reads DateTime as unspecified, but we always write as UTC. DateTime.SpecifyKind(ban.BanTime, DateTimeKind.Utc), @@ -385,7 +385,7 @@ protected override PlayerRecord MakePlayerRecord(Player record) return new ServerBanDef( ban.Id, uid, - ban.Address, + ban.Address.ToTuple(), ban.HWId == null ? null : ImmutableArray.Create(ban.HWId), // SQLite apparently always reads DateTime as unspecified, but we always write as UTC. DateTime.SpecifyKind(ban.BanTime, DateTimeKind.Utc), diff --git a/Content.Server/IP/IPAddressExt.cs b/Content.Server/IP/IPAddressExt.cs index 8374099d77a..6bfa4ef5486 100644 --- a/Content.Server/IP/IPAddressExt.cs +++ b/Content.Server/IP/IPAddressExt.cs @@ -1,11 +1,34 @@ using System.Collections; +using System.Diagnostics.CodeAnalysis; using System.Linq; +using System.Net; using System.Net.Sockets; +using NpgsqlTypes; namespace Content.Server.IP { public static class IPAddressExt { + // Npgsql used to map inet types as a tuple like this. + // I'm upgrading the dependencies and I don't wanna rewrite a bunch of DB code, so a few helpers it shall be. + [return: NotNullIfNotNull(nameof(tuple))] + public static NpgsqlInet? ToNpgsqlInet(this (IPAddress, int)? tuple) + { + if (tuple == null) + return null; + + return new NpgsqlInet(tuple.Value.Item1, (byte) tuple.Value.Item2); + } + + [return: NotNullIfNotNull(nameof(inet))] + public static (IPAddress, int)? ToTuple(this NpgsqlInet? inet) + { + if (inet == null) + return null; + + return (inet.Value.Address, inet.Value.Netmask); + } + // Taken from https://stackoverflow.com/a/56461160/4678631 public static bool IsInSubnet(this System.Net.IPAddress address, string subnetMask) { diff --git a/Content.Shared/Atmos/GasOverlayChunk.cs b/Content.Shared/Atmos/GasOverlayChunk.cs index e83ca7c6ca1..b8299e8e227 100644 --- a/Content.Shared/Atmos/GasOverlayChunk.cs +++ b/Content.Shared/Atmos/GasOverlayChunk.cs @@ -16,7 +16,7 @@ public sealed class GasOverlayChunk public readonly Vector2i Index; public readonly Vector2i Origin; - public GasOverlayData[][] TileData = new GasOverlayData[ChunkSize][]; + public GasOverlayData[] TileData = new GasOverlayData[ChunkSize * ChunkSize]; [NonSerialized] public GameTick LastUpdate; @@ -25,31 +25,25 @@ public GasOverlayChunk(Vector2i index) { Index = index; Origin = Index * ChunkSize; - - // For whatever reason, net serialize does not like multi_D arrays. So Jagged it is. - for (var i = 0; i < ChunkSize; i++) - { - TileData[i] = new GasOverlayData[ChunkSize]; - } } public GasOverlayChunk(GasOverlayChunk data) { Index = data.Index; Origin = data.Origin; - for (int i = 0; i < ChunkSize; i++) - { - // This does not clone the opacity array. However, this chunk cloning is only used by the client, - // which never modifies that directly. So this should be fine. - var array = TileData[i] = new GasOverlayData[ChunkSize]; - Array.Copy(data.TileData[i], array, ChunkSize); - } + + // This does not clone the opacity array. However, this chunk cloning is only used by the client, + // which never modifies that directly. So this should be fine. + Array.Copy(data.TileData, TileData, data.TileData.Length); } - public ref GasOverlayData GetData(Vector2i gridIndices) + /// + /// Resolve a data index into for the given grid index. + /// + public int GetDataIndex(Vector2i gridIndices) { DebugTools.Assert(InBounds(gridIndices)); - return ref TileData[gridIndices.X - Origin.X][gridIndices.Y - Origin.Y]; + return (gridIndices.X - Origin.X) + (gridIndices.Y - Origin.Y) * ChunkSize; } private bool InBounds(Vector2i gridIndices) @@ -63,37 +57,32 @@ private bool InBounds(Vector2i gridIndices) public struct GasChunkEnumerator { - private GasOverlayChunk _chunk; - public int X = 0; - public int Y = -1; - private GasOverlayData[] _column; + private readonly GasOverlayData[] _tileData; + private int _index = -1; + public int X = ChunkSize - 1; + public int Y = -1; public GasChunkEnumerator(GasOverlayChunk chunk) { - _chunk = chunk; - _column = _chunk.TileData[0]; + _tileData = chunk.TileData; } public bool MoveNext(out GasOverlayData gas) { - while (X < ChunkSize) + while (_index < _tileData.Length) { - // We want to increment Y before returning, but we also want it to match the current Y coordinate for - // the returned gas, so using a slightly different logic for the Y loop. - while (Y < ChunkSize - 1) + X += 1; + if (X >= ChunkSize) { - Y++; - gas = _column[Y]; - - if (!gas.Equals(default)) - return true; + X = 0; + Y += 1; } - X++; - if (X < ChunkSize) - _column = _chunk.TileData[X]; - Y = -1; + _index += 1; + gas = _tileData[_index]; + if (!gas.Equals(default)) + return true; } gas = default; diff --git a/Content.Shared/Content.Shared.csproj b/Content.Shared/Content.Shared.csproj index 1387c1b7991..e90e1ea7237 100644 --- a/Content.Shared/Content.Shared.csproj +++ b/Content.Shared/Content.Shared.csproj @@ -9,7 +9,7 @@ enable - + diff --git a/Content.Tests/Content.Tests.csproj b/Content.Tests/Content.Tests.csproj index e9274485262..a883892d872 100644 --- a/Content.Tests/Content.Tests.csproj +++ b/Content.Tests/Content.Tests.csproj @@ -8,10 +8,9 @@ ..\bin\Content.Tests\ - - - - + + + diff --git a/Content.Tests/Shared/Alert/ServerAlertsComponentTests.cs b/Content.Tests/Shared/Alert/ServerAlertsComponentTests.cs index 5d8d49d168c..405c0ec89ed 100644 --- a/Content.Tests/Shared/Alert/ServerAlertsComponentTests.cs +++ b/Content.Tests/Shared/Alert/ServerAlertsComponentTests.cs @@ -58,7 +58,7 @@ public void ShowAlerts() entManager.EventBus.RaiseComponentEvent(alertsComponent, getty); var alertState = (AlertsComponent.AlertsComponent_AutoState) getty.State!; - Assert.NotNull(alertState); + Assert.That(alertState, Is.Not.Null); Assert.That(alertState.Alerts.Count, Is.EqualTo(1)); Assert.That(alertState.Alerts.ContainsKey(lowpressure.AlertKey)); diff --git a/Content.Tests/Shared/DirectionRandomizerTest.cs b/Content.Tests/Shared/DirectionRandomizerTest.cs index 595bdeb6000..0afaa9ba4a0 100644 --- a/Content.Tests/Shared/DirectionRandomizerTest.cs +++ b/Content.Tests/Shared/DirectionRandomizerTest.cs @@ -54,7 +54,7 @@ public void TestRandomization(Direction[] x) // Because of above foreach this asserts // rand[1,2,3] - [1,2,3] == {} // i.e. randomized set minus original set is empty - Assert.IsTrue(set.Count == 0, "Each element must appear once "); + Assert.That(set.Count == 0, "Each element must appear once "); } } diff --git a/Content.Tests/Shared/Utility/RandomExtensionsTests.cs b/Content.Tests/Shared/Utility/RandomExtensionsTests.cs index ea9d9f1730c..f278bfbbd14 100644 --- a/Content.Tests/Shared/Utility/RandomExtensionsTests.cs +++ b/Content.Tests/Shared/Utility/RandomExtensionsTests.cs @@ -35,7 +35,7 @@ public void RandomDataSetValueTest() var random = IoCManager.Resolve(); var id = random.Pick(dataSet); - Assert.NotNull(id); + Assert.That(id, Is.Not.Null); } } } diff --git a/Content.Tools/Content.Tools.csproj b/Content.Tools/Content.Tools.csproj index 26524902cc4..f611924c581 100644 --- a/Content.Tools/Content.Tools.csproj +++ b/Content.Tools/Content.Tools.csproj @@ -5,7 +5,7 @@ - + diff --git a/Content.YAMLLinter/Content.YAMLLinter.csproj b/Content.YAMLLinter/Content.YAMLLinter.csproj index 6eb86def328..4e7344beaa2 100644 --- a/Content.YAMLLinter/Content.YAMLLinter.csproj +++ b/Content.YAMLLinter/Content.YAMLLinter.csproj @@ -19,7 +19,7 @@ - + diff --git a/Directory.Packages.props b/Directory.Packages.props new file mode 100644 index 00000000000..eee8c65f9a0 --- /dev/null +++ b/Directory.Packages.props @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + diff --git a/Pow3r/Pow3r.csproj b/Pow3r/Pow3r.csproj index bb63f269215..4f2d20087ab 100644 --- a/Pow3r/Pow3r.csproj +++ b/Pow3r/Pow3r.csproj @@ -6,10 +6,10 @@ - - - - + + + + diff --git a/RobustToolbox b/RobustToolbox index dfb5369664f..f844011348b 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit dfb5369664fe1b146a9cbb9f15d90d08d11db55e +Subproject commit f844011348b99128152fb468449f2e9e04ed5244 diff --git a/SpaceStation14.sln b/SpaceStation14.sln index 10c4ea1c2c4..5a05a09e359 100644 --- a/SpaceStation14.sln +++ b/SpaceStation14.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29709.97 +# Visual Studio Version 17 +VisualStudioVersion = 17.8.34330.188 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Content.Shared", "Content.Shared\Content.Shared.csproj", "{26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}" EndProject @@ -46,31 +46,29 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Content.Server.Database", " EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MSBuild", "MSBuild", "{50404922-9637-4394-BF59-165D0850ADC8}" ProjectSection(SolutionItems) = preProject - RobustToolbox\MSBuild\Robust.DefineConstants.targets = RobustToolbox\MSBuild\Robust.DefineConstants.targets - RobustToolbox\MSBuild\Robust.Engine.targets = RobustToolbox\MSBuild\Robust.Engine.targets - RobustToolbox\MSBuild\Robust.Properties.targets = RobustToolbox\MSBuild\Robust.Properties.targets - RobustToolbox\MSBuild\XamlIL.targets = RobustToolbox\MSBuild\XamlIL.targets RobustToolbox\MSBuild\Robust.Analyzers.targets = RobustToolbox\MSBuild\Robust.Analyzers.targets + RobustToolbox\MSBuild\Robust.CompNetworkGenerator.targets = RobustToolbox\MSBuild\Robust.CompNetworkGenerator.targets + RobustToolbox\MSBuild\Robust.Configurations.props = RobustToolbox\MSBuild\Robust.Configurations.props + RobustToolbox\MSBuild\Robust.DefineConstants.targets = RobustToolbox\MSBuild\Robust.DefineConstants.targets RobustToolbox\MSBuild\Robust.Engine.props = RobustToolbox\MSBuild\Robust.Engine.props + RobustToolbox\MSBuild\Robust.Engine.targets = RobustToolbox\MSBuild\Robust.Engine.targets RobustToolbox\MSBuild\Robust.Engine.Version.props = RobustToolbox\MSBuild\Robust.Engine.Version.props - RobustToolbox\MSBuild\Robust.Trimming.targets = RobustToolbox\MSBuild\Robust.Trimming.targets RobustToolbox\MSBuild\Robust.Platform.props = RobustToolbox\MSBuild\Robust.Platform.props - RobustToolbox\MSBuild\Robust.Configurations.props = RobustToolbox\MSBuild\Robust.Configurations.props - RobustToolbox\MSBuild\Robust.CompNetworkGenerator.targets = RobustToolbox\MSBuild\Robust.CompNetworkGenerator.targets + RobustToolbox\MSBuild\Robust.Properties.targets = RobustToolbox\MSBuild\Robust.Properties.targets + RobustToolbox\MSBuild\Robust.Trimming.targets = RobustToolbox\MSBuild\Robust.Trimming.targets + RobustToolbox\MSBuild\XamlIL.targets = RobustToolbox\MSBuild\XamlIL.targets EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{806ED41A-411B-4B3B-BEB6-DEC6DCA4C205}" ProjectSection(SolutionItems) = preProject - Tools\gen_build_info.py = Tools\gen_build_info.py Tools\generate_hashes.ps1 = Tools\generate_hashes.ps1 + Tools\gen_build_info.py = Tools\gen_build_info.py EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Robust.Shared.Scripting", "RobustToolbox\Robust.Shared.Scripting\Robust.Shared.Scripting.csproj", "{41B450C0-A361-4CD7-8121-7072B8995CFC}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NetSerializer", "RobustToolbox\NetSerializer\NetSerializer\NetSerializer.csproj", "{7B9472D3-79D4-48D1-9B22-BCDE518FE842}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Robust.Physics", "RobustToolbox\Robust.Physics\Robust.Physics.csproj", "{3BC34700-882F-426B-82BB-56D5708B5E0D}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robust.LoaderApi", "RobustToolbox\Robust.LoaderApi\Robust.LoaderApi\Robust.LoaderApi.csproj", "{1FAE651D-29D8-437A-9864-47CE0D180016}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robust.Client.NameGenerator", "RobustToolbox\Robust.Client.NameGenerator\Robust.Client.NameGenerator.csproj", "{3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}" @@ -110,11 +108,13 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Project Files", "Project Fi .editorconfig = .editorconfig .gitattributes = .gitattributes .gitignore = .gitignore + Directory.Packages.props = Directory.Packages.props README.md = README.md EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Project Files", "Project Files", "{A965CB3B-FD31-44AF-8872-85ABA436098D}" ProjectSection(SolutionItems) = preProject + RobustToolbox\Directory.Packages.props = RobustToolbox\Directory.Packages.props RobustToolbox\README.md = RobustToolbox\README.md RobustToolbox\RELEASE-NOTES.md = RobustToolbox\RELEASE-NOTES.md EndProjectSection @@ -127,317 +127,319 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robust.Serialization.Genera EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Content.PatreonParser", "Content.PatreonParser\Content.PatreonParser.csproj", "{D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robust.Analyzers.Tests", "RobustToolbox\Robust.Analyzers.Tests\Robust.Analyzers.Tests.csproj", "{83F510FE-9B50-4D96-AFAB-CC13998D6AFE}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU DebugOpt|Any CPU = DebugOpt|Any CPU + Release|Any CPU = Release|Any CPU Tools|Any CPU = Tools|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Release|Any CPU.Build.0 = Release|Any CPU {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Release|Any CPU.Build.0 = Release|Any CPU {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Tools|Any CPU.Build.0 = Tools|Any CPU {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Release|Any CPU.Build.0 = Release|Any CPU {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Release|Any CPU.Build.0 = Release|Any CPU {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Tools|Any CPU.Build.0 = Tools|Any CPU {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Release|Any CPU.Build.0 = Release|Any CPU {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Release|Any CPU.Build.0 = Release|Any CPU {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Tools|Any CPU.Build.0 = Tools|Any CPU {C899FCA4-7037-4E49-ABC2-44DE72487110}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C899FCA4-7037-4E49-ABC2-44DE72487110}.Release|Any CPU.ActiveCfg = Release|Any CPU {C899FCA4-7037-4E49-ABC2-44DE72487110}.Debug|Any CPU.Build.0 = Debug|Any CPU {C899FCA4-7037-4E49-ABC2-44DE72487110}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {C899FCA4-7037-4E49-ABC2-44DE72487110}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {C899FCA4-7037-4E49-ABC2-44DE72487110}.Release|Any CPU.ActiveCfg = Release|Any CPU {C899FCA4-7037-4E49-ABC2-44DE72487110}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {C899FCA4-7037-4E49-ABC2-44DE72487110}.Tools|Any CPU.Build.0 = Tools|Any CPU {8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.Build.0 = Release|Any CPU {8EDF4429-251A-416D-BB68-93F227191BCF}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {8EDF4429-251A-416D-BB68-93F227191BCF}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.Build.0 = Release|Any CPU {8EDF4429-251A-416D-BB68-93F227191BCF}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {8EDF4429-251A-416D-BB68-93F227191BCF}.Tools|Any CPU.Build.0 = Tools|Any CPU {59250BAF-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {59250BAF-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU - {59250BAF-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU - {59250BAF-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU {59250BAF-0000-0000-0000-000000000000}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {59250BAF-0000-0000-0000-000000000000}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {59250BAF-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU + {59250BAF-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU {59250BAF-0000-0000-0000-000000000000}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {59250BAF-0000-0000-0000-000000000000}.Tools|Any CPU.Build.0 = Tools|Any CPU {83429BD6-6358-4B18-BE51-401DF8EA2673}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {83429BD6-6358-4B18-BE51-401DF8EA2673}.Debug|Any CPU.Build.0 = Debug|Any CPU - {83429BD6-6358-4B18-BE51-401DF8EA2673}.Release|Any CPU.ActiveCfg = Release|Any CPU - {83429BD6-6358-4B18-BE51-401DF8EA2673}.Release|Any CPU.Build.0 = Release|Any CPU {83429BD6-6358-4B18-BE51-401DF8EA2673}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {83429BD6-6358-4B18-BE51-401DF8EA2673}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {83429BD6-6358-4B18-BE51-401DF8EA2673}.Release|Any CPU.ActiveCfg = Release|Any CPU + {83429BD6-6358-4B18-BE51-401DF8EA2673}.Release|Any CPU.Build.0 = Release|Any CPU {83429BD6-6358-4B18-BE51-401DF8EA2673}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {83429BD6-6358-4B18-BE51-401DF8EA2673}.Tools|Any CPU.Build.0 = Tools|Any CPU {B04AAE71-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B04AAE71-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B04AAE71-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B04AAE71-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU {B04AAE71-0000-0000-0000-000000000000}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {B04AAE71-0000-0000-0000-000000000000}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {B04AAE71-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B04AAE71-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU {B04AAE71-0000-0000-0000-000000000000}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {B04AAE71-0000-0000-0000-000000000000}.Tools|Any CPU.Build.0 = Tools|Any CPU {93F23A82-00C5-4572-964E-E7C9457726D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {93F23A82-00C5-4572-964E-E7C9457726D4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {93F23A82-00C5-4572-964E-E7C9457726D4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {93F23A82-00C5-4572-964E-E7C9457726D4}.Release|Any CPU.Build.0 = Release|Any CPU {93F23A82-00C5-4572-964E-E7C9457726D4}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {93F23A82-00C5-4572-964E-E7C9457726D4}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {93F23A82-00C5-4572-964E-E7C9457726D4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {93F23A82-00C5-4572-964E-E7C9457726D4}.Release|Any CPU.Build.0 = Release|Any CPU {93F23A82-00C5-4572-964E-E7C9457726D4}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {93F23A82-00C5-4572-964E-E7C9457726D4}.Tools|Any CPU.Build.0 = Tools|Any CPU {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Release|Any CPU.Build.0 = Release|Any CPU {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Release|Any CPU.Build.0 = Release|Any CPU {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Tools|Any CPU.Build.0 = Tools|Any CPU {0529F740-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0529F740-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0529F740-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0529F740-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU {0529F740-0000-0000-0000-000000000000}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {0529F740-0000-0000-0000-000000000000}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {0529F740-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0529F740-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU {0529F740-0000-0000-0000-000000000000}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {0529F740-0000-0000-0000-000000000000}.Tools|Any CPU.Build.0 = Tools|Any CPU {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Release|Any CPU.Build.0 = Release|Any CPU {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Release|Any CPU.Build.0 = Release|Any CPU {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Tools|Any CPU.Build.0 = Tools|Any CPU {7AC832A1-2461-4EB5-AC26-26F6AFFA9E46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7AC832A1-2461-4EB5-AC26-26F6AFFA9E46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7AC832A1-2461-4EB5-AC26-26F6AFFA9E46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7AC832A1-2461-4EB5-AC26-26F6AFFA9E46}.Release|Any CPU.Build.0 = Release|Any CPU {7AC832A1-2461-4EB5-AC26-26F6AFFA9E46}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {7AC832A1-2461-4EB5-AC26-26F6AFFA9E46}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {7AC832A1-2461-4EB5-AC26-26F6AFFA9E46}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7AC832A1-2461-4EB5-AC26-26F6AFFA9E46}.Release|Any CPU.Build.0 = Release|Any CPU {7AC832A1-2461-4EB5-AC26-26F6AFFA9E46}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {7AC832A1-2461-4EB5-AC26-26F6AFFA9E46}.Tools|Any CPU.Build.0 = Tools|Any CPU {4809F412-3132-419E-BF9D-CCF7593C3533}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4809F412-3132-419E-BF9D-CCF7593C3533}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4809F412-3132-419E-BF9D-CCF7593C3533}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4809F412-3132-419E-BF9D-CCF7593C3533}.Release|Any CPU.Build.0 = Release|Any CPU {4809F412-3132-419E-BF9D-CCF7593C3533}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {4809F412-3132-419E-BF9D-CCF7593C3533}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {4809F412-3132-419E-BF9D-CCF7593C3533}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4809F412-3132-419E-BF9D-CCF7593C3533}.Release|Any CPU.Build.0 = Release|Any CPU {4809F412-3132-419E-BF9D-CCF7593C3533}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {4809F412-3132-419E-BF9D-CCF7593C3533}.Tools|Any CPU.Build.0 = Tools|Any CPU {45C9B43F-305D-4651-9863-F6384CBC847F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {45C9B43F-305D-4651-9863-F6384CBC847F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {45C9B43F-305D-4651-9863-F6384CBC847F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {45C9B43F-305D-4651-9863-F6384CBC847F}.Release|Any CPU.Build.0 = Release|Any CPU {45C9B43F-305D-4651-9863-F6384CBC847F}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {45C9B43F-305D-4651-9863-F6384CBC847F}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {45C9B43F-305D-4651-9863-F6384CBC847F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {45C9B43F-305D-4651-9863-F6384CBC847F}.Release|Any CPU.Build.0 = Release|Any CPU {45C9B43F-305D-4651-9863-F6384CBC847F}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {45C9B43F-305D-4651-9863-F6384CBC847F}.Tools|Any CPU.Build.0 = Tools|Any CPU {41B450C0-A361-4CD7-8121-7072B8995CFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {41B450C0-A361-4CD7-8121-7072B8995CFC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {41B450C0-A361-4CD7-8121-7072B8995CFC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {41B450C0-A361-4CD7-8121-7072B8995CFC}.Release|Any CPU.Build.0 = Release|Any CPU {41B450C0-A361-4CD7-8121-7072B8995CFC}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {41B450C0-A361-4CD7-8121-7072B8995CFC}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {41B450C0-A361-4CD7-8121-7072B8995CFC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {41B450C0-A361-4CD7-8121-7072B8995CFC}.Release|Any CPU.Build.0 = Release|Any CPU {41B450C0-A361-4CD7-8121-7072B8995CFC}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {41B450C0-A361-4CD7-8121-7072B8995CFC}.Tools|Any CPU.Build.0 = Tools|Any CPU {7B9472D3-79D4-48D1-9B22-BCDE518FE842}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7B9472D3-79D4-48D1-9B22-BCDE518FE842}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7B9472D3-79D4-48D1-9B22-BCDE518FE842}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7B9472D3-79D4-48D1-9B22-BCDE518FE842}.Release|Any CPU.Build.0 = Release|Any CPU {7B9472D3-79D4-48D1-9B22-BCDE518FE842}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU {7B9472D3-79D4-48D1-9B22-BCDE518FE842}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU + {7B9472D3-79D4-48D1-9B22-BCDE518FE842}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7B9472D3-79D4-48D1-9B22-BCDE518FE842}.Release|Any CPU.Build.0 = Release|Any CPU {7B9472D3-79D4-48D1-9B22-BCDE518FE842}.Tools|Any CPU.ActiveCfg = Release|Any CPU {7B9472D3-79D4-48D1-9B22-BCDE518FE842}.Tools|Any CPU.Build.0 = Release|Any CPU - {3BC34700-882F-426B-82BB-56D5708B5E0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3BC34700-882F-426B-82BB-56D5708B5E0D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3BC34700-882F-426B-82BB-56D5708B5E0D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3BC34700-882F-426B-82BB-56D5708B5E0D}.Release|Any CPU.Build.0 = Release|Any CPU - {3BC34700-882F-426B-82BB-56D5708B5E0D}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU - {3BC34700-882F-426B-82BB-56D5708B5E0D}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU - {3BC34700-882F-426B-82BB-56D5708B5E0D}.Tools|Any CPU.ActiveCfg = Tools|Any CPU - {3BC34700-882F-426B-82BB-56D5708B5E0D}.Tools|Any CPU.Build.0 = Tools|Any CPU {1FAE651D-29D8-437A-9864-47CE0D180016}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1FAE651D-29D8-437A-9864-47CE0D180016}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1FAE651D-29D8-437A-9864-47CE0D180016}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1FAE651D-29D8-437A-9864-47CE0D180016}.Release|Any CPU.Build.0 = Release|Any CPU {1FAE651D-29D8-437A-9864-47CE0D180016}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU {1FAE651D-29D8-437A-9864-47CE0D180016}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU + {1FAE651D-29D8-437A-9864-47CE0D180016}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1FAE651D-29D8-437A-9864-47CE0D180016}.Release|Any CPU.Build.0 = Release|Any CPU {1FAE651D-29D8-437A-9864-47CE0D180016}.Tools|Any CPU.ActiveCfg = Release|Any CPU {1FAE651D-29D8-437A-9864-47CE0D180016}.Tools|Any CPU.Build.0 = Release|Any CPU {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}.Release|Any CPU.Build.0 = Release|Any CPU {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU + {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}.Release|Any CPU.Build.0 = Release|Any CPU {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}.Tools|Any CPU.ActiveCfg = Release|Any CPU {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}.Tools|Any CPU.Build.0 = Release|Any CPU {8922428F-17C3-47A7-BFE9-570DEB2464DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8922428F-17C3-47A7-BFE9-570DEB2464DA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8922428F-17C3-47A7-BFE9-570DEB2464DA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8922428F-17C3-47A7-BFE9-570DEB2464DA}.Release|Any CPU.Build.0 = Release|Any CPU {8922428F-17C3-47A7-BFE9-570DEB2464DA}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU {8922428F-17C3-47A7-BFE9-570DEB2464DA}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU + {8922428F-17C3-47A7-BFE9-570DEB2464DA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8922428F-17C3-47A7-BFE9-570DEB2464DA}.Release|Any CPU.Build.0 = Release|Any CPU {8922428F-17C3-47A7-BFE9-570DEB2464DA}.Tools|Any CPU.ActiveCfg = Release|Any CPU {8922428F-17C3-47A7-BFE9-570DEB2464DA}.Tools|Any CPU.Build.0 = Release|Any CPU {16F7DE32-0186-44B9-9345-0C20D1BF2422}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {16F7DE32-0186-44B9-9345-0C20D1BF2422}.Debug|Any CPU.Build.0 = Debug|Any CPU - {16F7DE32-0186-44B9-9345-0C20D1BF2422}.Release|Any CPU.ActiveCfg = Release|Any CPU - {16F7DE32-0186-44B9-9345-0C20D1BF2422}.Release|Any CPU.Build.0 = Release|Any CPU {16F7DE32-0186-44B9-9345-0C20D1BF2422}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU {16F7DE32-0186-44B9-9345-0C20D1BF2422}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU + {16F7DE32-0186-44B9-9345-0C20D1BF2422}.Release|Any CPU.ActiveCfg = Release|Any CPU + {16F7DE32-0186-44B9-9345-0C20D1BF2422}.Release|Any CPU.Build.0 = Release|Any CPU {16F7DE32-0186-44B9-9345-0C20D1BF2422}.Tools|Any CPU.ActiveCfg = Release|Any CPU {16F7DE32-0186-44B9-9345-0C20D1BF2422}.Tools|Any CPU.Build.0 = Release|Any CPU {23F09C45-950E-4DB7-A465-E937450FF008}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {23F09C45-950E-4DB7-A465-E937450FF008}.Debug|Any CPU.Build.0 = Debug|Any CPU - {23F09C45-950E-4DB7-A465-E937450FF008}.Release|Any CPU.ActiveCfg = Release|Any CPU - {23F09C45-950E-4DB7-A465-E937450FF008}.Release|Any CPU.Build.0 = Release|Any CPU {23F09C45-950E-4DB7-A465-E937450FF008}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU {23F09C45-950E-4DB7-A465-E937450FF008}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU + {23F09C45-950E-4DB7-A465-E937450FF008}.Release|Any CPU.ActiveCfg = Release|Any CPU + {23F09C45-950E-4DB7-A465-E937450FF008}.Release|Any CPU.Build.0 = Release|Any CPU {23F09C45-950E-4DB7-A465-E937450FF008}.Tools|Any CPU.ActiveCfg = Release|Any CPU {23F09C45-950E-4DB7-A465-E937450FF008}.Tools|Any CPU.Build.0 = Release|Any CPU {440426C1-8DCA-43F6-967F-94439B8DAF47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {440426C1-8DCA-43F6-967F-94439B8DAF47}.Debug|Any CPU.Build.0 = Debug|Any CPU - {440426C1-8DCA-43F6-967F-94439B8DAF47}.Release|Any CPU.ActiveCfg = Release|Any CPU - {440426C1-8DCA-43F6-967F-94439B8DAF47}.Release|Any CPU.Build.0 = Release|Any CPU {440426C1-8DCA-43F6-967F-94439B8DAF47}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU {440426C1-8DCA-43F6-967F-94439B8DAF47}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU + {440426C1-8DCA-43F6-967F-94439B8DAF47}.Release|Any CPU.ActiveCfg = Release|Any CPU + {440426C1-8DCA-43F6-967F-94439B8DAF47}.Release|Any CPU.Build.0 = Release|Any CPU {440426C1-8DCA-43F6-967F-94439B8DAF47}.Tools|Any CPU.ActiveCfg = Release|Any CPU {440426C1-8DCA-43F6-967F-94439B8DAF47}.Tools|Any CPU.Build.0 = Release|Any CPU {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Release|Any CPU.Build.0 = Release|Any CPU {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Release|Any CPU.Build.0 = Release|Any CPU {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Tools|Any CPU.Build.0 = Tools|Any CPU {88B0FC0F-7209-40E2-AF16-EB90AF727C5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {88B0FC0F-7209-40E2-AF16-EB90AF727C5B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {88B0FC0F-7209-40E2-AF16-EB90AF727C5B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {88B0FC0F-7209-40E2-AF16-EB90AF727C5B}.Release|Any CPU.Build.0 = Release|Any CPU {88B0FC0F-7209-40E2-AF16-EB90AF727C5B}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU {88B0FC0F-7209-40E2-AF16-EB90AF727C5B}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU + {88B0FC0F-7209-40E2-AF16-EB90AF727C5B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {88B0FC0F-7209-40E2-AF16-EB90AF727C5B}.Release|Any CPU.Build.0 = Release|Any CPU {88B0FC0F-7209-40E2-AF16-EB90AF727C5B}.Tools|Any CPU.ActiveCfg = Release|Any CPU {88B0FC0F-7209-40E2-AF16-EB90AF727C5B}.Tools|Any CPU.Build.0 = Release|Any CPU {A59E2FCC-93CF-4886-8EA7-94F021A7475D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A59E2FCC-93CF-4886-8EA7-94F021A7475D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A59E2FCC-93CF-4886-8EA7-94F021A7475D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A59E2FCC-93CF-4886-8EA7-94F021A7475D}.Release|Any CPU.Build.0 = Release|Any CPU {A59E2FCC-93CF-4886-8EA7-94F021A7475D}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {A59E2FCC-93CF-4886-8EA7-94F021A7475D}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {A59E2FCC-93CF-4886-8EA7-94F021A7475D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A59E2FCC-93CF-4886-8EA7-94F021A7475D}.Release|Any CPU.Build.0 = Release|Any CPU {A59E2FCC-93CF-4886-8EA7-94F021A7475D}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {A59E2FCC-93CF-4886-8EA7-94F021A7475D}.Tools|Any CPU.Build.0 = Tools|Any CPU {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12}.Release|Any CPU.Build.0 = Release|Any CPU {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU + {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12}.Release|Any CPU.Build.0 = Release|Any CPU {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12}.Tools|Any CPU.ActiveCfg = Release|Any CPU {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12}.Tools|Any CPU.Build.0 = Release|Any CPU {8A21C7CA-2EB8-40E5-8043-33582C06D139}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8A21C7CA-2EB8-40E5-8043-33582C06D139}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8A21C7CA-2EB8-40E5-8043-33582C06D139}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8A21C7CA-2EB8-40E5-8043-33582C06D139}.Release|Any CPU.Build.0 = Release|Any CPU {8A21C7CA-2EB8-40E5-8043-33582C06D139}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {8A21C7CA-2EB8-40E5-8043-33582C06D139}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {8A21C7CA-2EB8-40E5-8043-33582C06D139}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8A21C7CA-2EB8-40E5-8043-33582C06D139}.Release|Any CPU.Build.0 = Release|Any CPU {8A21C7CA-2EB8-40E5-8043-33582C06D139}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {8A21C7CA-2EB8-40E5-8043-33582C06D139}.Tools|Any CPU.Build.0 = Tools|Any CPU {1C048C9F-00A9-4796-BE4D-BB36B7769720}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1C048C9F-00A9-4796-BE4D-BB36B7769720}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1C048C9F-00A9-4796-BE4D-BB36B7769720}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1C048C9F-00A9-4796-BE4D-BB36B7769720}.Release|Any CPU.Build.0 = Release|Any CPU {1C048C9F-00A9-4796-BE4D-BB36B7769720}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {1C048C9F-00A9-4796-BE4D-BB36B7769720}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {1C048C9F-00A9-4796-BE4D-BB36B7769720}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1C048C9F-00A9-4796-BE4D-BB36B7769720}.Release|Any CPU.Build.0 = Release|Any CPU {1C048C9F-00A9-4796-BE4D-BB36B7769720}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {1C048C9F-00A9-4796-BE4D-BB36B7769720}.Tools|Any CPU.Build.0 = Tools|Any CPU {8842381D-3426-4BA8-93DA-599AB14D88E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8842381D-3426-4BA8-93DA-599AB14D88E9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8842381D-3426-4BA8-93DA-599AB14D88E9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8842381D-3426-4BA8-93DA-599AB14D88E9}.Release|Any CPU.Build.0 = Release|Any CPU {8842381D-3426-4BA8-93DA-599AB14D88E9}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {8842381D-3426-4BA8-93DA-599AB14D88E9}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {8842381D-3426-4BA8-93DA-599AB14D88E9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8842381D-3426-4BA8-93DA-599AB14D88E9}.Release|Any CPU.Build.0 = Release|Any CPU {8842381D-3426-4BA8-93DA-599AB14D88E9}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {8842381D-3426-4BA8-93DA-599AB14D88E9}.Tools|Any CPU.Build.0 = Tools|Any CPU {199BBEA1-7627-434B-B6F6-0F52A7C0E1E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {199BBEA1-7627-434B-B6F6-0F52A7C0E1E0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {199BBEA1-7627-434B-B6F6-0F52A7C0E1E0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {199BBEA1-7627-434B-B6F6-0F52A7C0E1E0}.Release|Any CPU.Build.0 = Release|Any CPU {199BBEA1-7627-434B-B6F6-0F52A7C0E1E0}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {199BBEA1-7627-434B-B6F6-0F52A7C0E1E0}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {199BBEA1-7627-434B-B6F6-0F52A7C0E1E0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {199BBEA1-7627-434B-B6F6-0F52A7C0E1E0}.Release|Any CPU.Build.0 = Release|Any CPU {199BBEA1-7627-434B-B6F6-0F52A7C0E1E0}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {199BBEA1-7627-434B-B6F6-0F52A7C0E1E0}.Tools|Any CPU.Build.0 = Tools|Any CPU {952AAF2A-DF63-4A7D-8094-3453893EBA80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {952AAF2A-DF63-4A7D-8094-3453893EBA80}.Debug|Any CPU.Build.0 = Debug|Any CPU - {952AAF2A-DF63-4A7D-8094-3453893EBA80}.Release|Any CPU.ActiveCfg = Release|Any CPU - {952AAF2A-DF63-4A7D-8094-3453893EBA80}.Release|Any CPU.Build.0 = Release|Any CPU {952AAF2A-DF63-4A7D-8094-3453893EBA80}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {952AAF2A-DF63-4A7D-8094-3453893EBA80}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {952AAF2A-DF63-4A7D-8094-3453893EBA80}.Release|Any CPU.ActiveCfg = Release|Any CPU + {952AAF2A-DF63-4A7D-8094-3453893EBA80}.Release|Any CPU.Build.0 = Release|Any CPU {952AAF2A-DF63-4A7D-8094-3453893EBA80}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {952AAF2A-DF63-4A7D-8094-3453893EBA80}.Tools|Any CPU.Build.0 = Tools|Any CPU {424445D4-F5D9-4CA9-A435-0A36E8AA28F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {424445D4-F5D9-4CA9-A435-0A36E8AA28F3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {424445D4-F5D9-4CA9-A435-0A36E8AA28F3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {424445D4-F5D9-4CA9-A435-0A36E8AA28F3}.Release|Any CPU.Build.0 = Release|Any CPU {424445D4-F5D9-4CA9-A435-0A36E8AA28F3}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {424445D4-F5D9-4CA9-A435-0A36E8AA28F3}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {424445D4-F5D9-4CA9-A435-0A36E8AA28F3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {424445D4-F5D9-4CA9-A435-0A36E8AA28F3}.Release|Any CPU.Build.0 = Release|Any CPU {424445D4-F5D9-4CA9-A435-0A36E8AA28F3}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {424445D4-F5D9-4CA9-A435-0A36E8AA28F3}.Tools|Any CPU.Build.0 = Tools|Any CPU {A493616C-338D-47B7-8072-A7F14D034D0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A493616C-338D-47B7-8072-A7F14D034D0B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A493616C-338D-47B7-8072-A7F14D034D0B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A493616C-338D-47B7-8072-A7F14D034D0B}.Release|Any CPU.Build.0 = Release|Any CPU {A493616C-338D-47B7-8072-A7F14D034D0B}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {A493616C-338D-47B7-8072-A7F14D034D0B}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {A493616C-338D-47B7-8072-A7F14D034D0B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A493616C-338D-47B7-8072-A7F14D034D0B}.Release|Any CPU.Build.0 = Release|Any CPU {A493616C-338D-47B7-8072-A7F14D034D0B}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {A493616C-338D-47B7-8072-A7F14D034D0B}.Tools|Any CPU.Build.0 = Tools|Any CPU {07CA34A1-1D37-4771-A2E3-495A1044AE0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {07CA34A1-1D37-4771-A2E3-495A1044AE0B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {07CA34A1-1D37-4771-A2E3-495A1044AE0B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {07CA34A1-1D37-4771-A2E3-495A1044AE0B}.Release|Any CPU.Build.0 = Release|Any CPU {07CA34A1-1D37-4771-A2E3-495A1044AE0B}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU {07CA34A1-1D37-4771-A2E3-495A1044AE0B}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {07CA34A1-1D37-4771-A2E3-495A1044AE0B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {07CA34A1-1D37-4771-A2E3-495A1044AE0B}.Release|Any CPU.Build.0 = Release|Any CPU {07CA34A1-1D37-4771-A2E3-495A1044AE0B}.Tools|Any CPU.ActiveCfg = Tools|Any CPU {07CA34A1-1D37-4771-A2E3-495A1044AE0B}.Tools|Any CPU.Build.0 = Tools|Any CPU {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.Release|Any CPU.Build.0 = Release|Any CPU {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU + {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.Release|Any CPU.Build.0 = Release|Any CPU {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.Tools|Any CPU.ActiveCfg = Debug|Any CPU {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.Tools|Any CPU.Build.0 = Debug|Any CPU {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Release|Any CPU.Build.0 = Release|Any CPU {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU + {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Release|Any CPU.Build.0 = Release|Any CPU {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Tools|Any CPU.ActiveCfg = Debug|Any CPU {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Tools|Any CPU.Build.0 = Debug|Any CPU + {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU + {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU + {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.Release|Any CPU.Build.0 = Release|Any CPU + {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.Tools|Any CPU.ActiveCfg = Tools|Any CPU + {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.Tools|Any CPU.Build.0 = Tools|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -454,12 +456,11 @@ Global {50404922-9637-4394-BF59-165D0850ADC8} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {41B450C0-A361-4CD7-8121-7072B8995CFC} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {7B9472D3-79D4-48D1-9B22-BCDE518FE842} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} - {3BC34700-882F-426B-82BB-56D5708B5E0D} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {1FAE651D-29D8-437A-9864-47CE0D180016} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {8922428F-17C3-47A7-BFE9-570DEB2464DA} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} - {AFF53804-115F-4E67-B81F-26265EA27880} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {16F7DE32-0186-44B9-9345-0C20D1BF2422} = {AFF53804-115F-4E67-B81F-26265EA27880} + {AFF53804-115F-4E67-B81F-26265EA27880} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {23F09C45-950E-4DB7-A465-E937450FF008} = {AFF53804-115F-4E67-B81F-26265EA27880} {440426C1-8DCA-43F6-967F-94439B8DAF47} = {AFF53804-115F-4E67-B81F-26265EA27880} {88B0FC0F-7209-40E2-AF16-EB90AF727C5B} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} @@ -469,6 +470,7 @@ Global {A965CB3B-FD31-44AF-8872-85ABA436098D} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {07CA34A1-1D37-4771-A2E3-495A1044AE0B} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} + {83F510FE-9B50-4D96-AFAB-CC13998D6AFE} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {AA37ED9F-F8D6-468E-A101-658AD605B09A} diff --git a/nuget.config b/nuget.config index 09f4cb662b5..6d136fbc1b6 100644 --- a/nuget.config +++ b/nuget.config @@ -4,4 +4,12 @@ + + + + + + + +