diff --git a/.vscode/settings.json b/.vscode/settings.json
index bc1f86d8..51abeffb 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,18 +1,6 @@
{
- "dotnet-test-explorer.testProjectPath": "**/*Tests.@(csproj|vbproj|fsproj)",
- "sqltools.connections": [
- {
- "previewLimit": 50,
- "server": "localhost",
- "port": 5432,
- "driver": "PostgreSQL",
- "name": "yavscdev",
- "group": "yavsc",
- "database": "YavscDev",
- "username": "yavscdev",
- "password": "admin"
- }
- ],
+ "dotnet-test-explorer.testProjectPath": "test/**/*Tests.csproj",
+
"cSpell.words": [
"appsettings",
"Newtonsoft",
diff --git a/Directory.Packages.props b/Directory.Packages.props
new file mode 100644
index 00000000..60c5ad84
--- /dev/null
+++ b/Directory.Packages.props
@@ -0,0 +1,50 @@
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Api/Api.csproj b/src/Api/Api.csproj
index aa256182..31d7553d 100644
--- a/src/Api/Api.csproj
+++ b/src/Api/Api.csproj
@@ -1,12 +1,12 @@
-
+
net9.0
enable
enable
1c73094f-959f-4211-b1a1-6a69b236c283
-
-
+
+
-
-
+
+
\ No newline at end of file
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index f53f4fe8..10cfa82d 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -1,5 +1,5 @@
-
+
1.0.8
-
+
\ No newline at end of file
diff --git a/src/Yavsc.Abstract/Constants.cs b/src/Yavsc.Abstract/Constants.cs
index 033cdecd..ca641ccc 100644
--- a/src/Yavsc.Abstract/Constants.cs
+++ b/src/Yavsc.Abstract/Constants.cs
@@ -37,7 +37,7 @@ namespace Yavsc
public const string FrontOfficeGroupName = "FrontOffice";
public const string DefaultAvatar = "/images/Users/icon_user.png";
public const string AnonAvatar = "/images/Users/icon_anon_user.png";
- public const string YavscConnectionStringEnvName = "DEFAULTCONNECTION_CONNECTIONSTRING";
+ public const string YavscConnectionStringEnvName = "YAVSC_CONNECTION_STRING";
// at the end, let 4*4 bytes in peace
public const int WebSocketsMaxBufLen = 4096;
diff --git a/src/Yavsc.Abstract/Yavsc.Abstract.csproj b/src/Yavsc.Abstract/Yavsc.Abstract.csproj
index 2ade24d2..d92c9313 100644
--- a/src/Yavsc.Abstract/Yavsc.Abstract.csproj
+++ b/src/Yavsc.Abstract/Yavsc.Abstract.csproj
@@ -1,16 +1,12 @@
-
net9.0
enable
enable
A shared model for a little client/server app, dealing about establishing some contract, between some human client and provider.
-
-
-
+
-
-
+
\ No newline at end of file
diff --git a/src/Yavsc.Server/Helpers/WorkflowHelpers.cs b/src/Yavsc.Server/Helpers/WorkflowHelpers.cs
index c45c7f0c..a1180ed2 100644
--- a/src/Yavsc.Server/Helpers/WorkflowHelpers.cs
+++ b/src/Yavsc.Server/Helpers/WorkflowHelpers.cs
@@ -16,75 +16,80 @@ namespace Yavsc.Helpers
public static class WorkflowHelpers
{
- public static async Task>
- ListPerformersAsync(this ApplicationDbContext context,
+ public static async Task>
+ ListPerformersAsync(this ApplicationDbContext context,
IBillingService billing,
string actCode)
{
-
+
var actors = context.Performers
- .Include(p=>p.Activity)
- .Include(p=>p.Performer)
- .Where(p => p.Active && p.Activity.Any(u=>u.DoesCode==actCode)).OrderBy( x => x.Rate )
+ .Include(p => p.Activity)
+ .Include(p => p.Performer)
+ .Where(p => p.Active && p.Activity.Any(u => u.DoesCode == actCode)).OrderBy(x => x.Rate)
.ToArray();
- List result = new ();
+ List result = new();
foreach (var a in actors)
{
var settings = await billing.GetPerformersSettingsAsync(actCode, a.PerformerId);
- result.Add(new PerformerProfileViewModel(a, actCode,settings));
+ result.Add(new PerformerProfileViewModel(a, actCode, settings));
}
return result;
}
- public static void RegisterBilling(string code, Func getter) where T : IBillable
- {
- BillingService.Billing.Add(code, getter);
- BillingService.GlobalBillingMap.Add(typeof(T).Name, code);
- }
-
- public static void ConfigureBillingService()
- {
- foreach (var a in System.AppDomain.CurrentDomain.GetAssemblies())
+ public static void RegisterBilling(string code, Func getter) where T : IBillable
{
- foreach (var c in a.GetTypes())
+ if (BillingService.Billing.ContainsKey(code)
+ || BillingService.GlobalBillingMap.ContainsKey(code))
{
- if (c.IsClass && !c.IsAbstract &&
- c.GetInterface("ISpecializationSettings") != null)
- {
- Config.ProfileTypes.Add(c);
- }
+ throw new InvalidOperationException("Billing setup");
}
+ BillingService.Billing.Add(code, getter);
+ BillingService.GlobalBillingMap.Add(typeof(T).Name, code);
}
- foreach (var propertyInfo in typeof(ApplicationDbContext).GetProperties())
+ public static void ConfigureBillingService()
{
- foreach (var attr in propertyInfo.CustomAttributes)
+ foreach (var a in System.AppDomain.CurrentDomain.GetAssemblies())
{
- // something like a DbSet?
- if (typeof(Yavsc.Attributes.ActivitySettingsAttribute).IsAssignableFrom(attr.AttributeType))
+ foreach (var c in a.GetTypes())
{
- BillingService.UserSettings.Add(propertyInfo);
+ if (c.IsClass && !c.IsAbstract &&
+ c.GetInterface("ISpecializationSettings") != null)
+ {
+ Config.ProfileTypes.Add(c);
+ }
}
}
+
+ foreach (var propertyInfo in typeof(ApplicationDbContext).GetProperties())
+ {
+ foreach (var attr in propertyInfo.CustomAttributes)
+ {
+ // something like a DbSet?
+ if (typeof(Yavsc.Attributes.ActivitySettingsAttribute).IsAssignableFrom(attr.AttributeType))
+ {
+ BillingService.UserSettings.Add(propertyInfo);
+ }
+ }
+ }
+
+ RegisterBilling(BillingCodes.Brush, new Func
+ ((db, id) =>
+ {
+ var query = db.HairCutQueries.Include(q => q.Prestation).Include(q => q.Regularisation).Single(q => q.Id == id);
+ query.SelectedProfile = db.BrusherProfile.Single(b => b.UserId == query.PerformerId);
+ return query;
+ }));
+
+ RegisterBilling(BillingCodes.MBrush, new Func
+ ((db, id) => db.HairMultiCutQueries.Include(q => q.Regularisation).Single(q => q.Id == id)));
+
+ RegisterBilling(BillingCodes.Rdv, new Func
+ ((db, id) => db.RdvQueries.Include(q => q.Regularisation).Single(q => q.Id == id)));
}
- RegisterBilling(BillingCodes.Brush, new Func
- ((db, id) =>
- {
- var query = db.HairCutQueries.Include(q => q.Prestation).Include(q => q.Regularisation).Single(q => q.Id == id);
- query.SelectedProfile = db.BrusherProfile.Single(b => b.UserId == query.PerformerId);
- return query;
- }));
-
- RegisterBilling(BillingCodes.MBrush, new Func
- ((db, id) => db.HairMultiCutQueries.Include(q => q.Regularisation).Single(q => q.Id == id)));
-
- RegisterBilling(BillingCodes.Rdv, new Func
- ((db, id) => db.RdvQueries.Include(q => q.Regularisation).Single(q => q.Id == id)));
- }
-
}
}
diff --git a/src/Yavsc.Server/Migrations/ApplicationDbContextModelSnapshot.cs b/src/Yavsc.Server/Migrations/ApplicationDbContextModelSnapshot.cs
index 79ff71a6..cd43e81d 100644
--- a/src/Yavsc.Server/Migrations/ApplicationDbContextModelSnapshot.cs
+++ b/src/Yavsc.Server/Migrations/ApplicationDbContextModelSnapshot.cs
@@ -17,7 +17,7 @@ namespace Yavsc.Migrations
{
#pragma warning disable 612, 618
modelBuilder
- .HasAnnotation("ProductVersion", "9.0.6")
+ .HasAnnotation("ProductVersion", "9.0.7")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
diff --git a/src/Yavsc.Server/Models/ApplicationDbContext.cs b/src/Yavsc.Server/Models/ApplicationDbContext.cs
index ca9bd8b8..be5b62c7 100644
--- a/src/Yavsc.Server/Models/ApplicationDbContext.cs
+++ b/src/Yavsc.Server/Models/ApplicationDbContext.cs
@@ -35,17 +35,18 @@ namespace Yavsc.Models
using Microsoft.EntityFrameworkCore.ChangeTracking;
using Yavsc.Abstract.Models.Messaging;
+ using Microsoft.Extensions.Logging;
+ using System.Configuration;
public class ApplicationDbContext : IdentityDbContext
{
- public ApplicationDbContext()
- {
+ private readonly ILogger logger;
- }
- public ApplicationDbContext(DbContextOptions options) : base(options)
+ public ApplicationDbContext(ILoggerFactory loggerFactory,
+ DbContextOptions options) : base(options)
{
-
+ logger = loggerFactory.CreateLogger();
}
protected override void OnModelCreating(ModelBuilder builder)
@@ -89,22 +90,6 @@ namespace Yavsc.Models
// builder.Entity>().HasKey(i=> new { i.LoginProvider, i.UserId, i.ProviderKey });
}
- // this is not a failback procedure.
-
- protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
- {
- var appSetup = (string)AppDomain.CurrentDomain.GetData(Constants.YavscConnectionStringEnvName);
- if (!string.IsNullOrWhiteSpace(appSetup))
- {
- optionsBuilder.UseNpgsql(appSetup);
- return;
- }
- var envSetup = Environment.GetEnvironmentVariable(Constants.YavscConnectionStringEnvName);
- if (envSetup != null)
- optionsBuilder.UseNpgsql(envSetup);
- else optionsBuilder.UseNpgsql();
- }
-
public DbSet Applications { get; set; }
public DbSet RefreshTokens { get; set; }
diff --git a/src/Yavsc.Server/Yavsc.Server.csproj b/src/Yavsc.Server/Yavsc.Server.csproj
index 31044854..44632c58 100644
--- a/src/Yavsc.Server/Yavsc.Server.csproj
+++ b/src/Yavsc.Server/Yavsc.Server.csproj
@@ -1,33 +1,32 @@
-
+
net9.0
enable
enable
53bd70e8-ff81-497a-847f-a15fd8ea7a09
-
-
-
-
-
-
-
+
+
+
+
+
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
\ No newline at end of file
diff --git a/src/Yavsc/Extensions/HostingExtensions.cs b/src/Yavsc/Extensions/HostingExtensions.cs
index 96e9ef56..02b8187a 100644
--- a/src/Yavsc/Extensions/HostingExtensions.cs
+++ b/src/Yavsc/Extensions/HostingExtensions.cs
@@ -44,7 +44,7 @@ namespace Yavsc.Extensions;
public static class HostingExtensions
{
- internal static WebApplication ConfigureWebAppServices(this WebApplicationBuilder builder)
+ public static WebApplication ConfigureWebAppServices(this WebApplicationBuilder builder)
{
IServiceCollection services = LoadConfiguration(builder);
@@ -300,7 +300,7 @@ public static class HostingExtensions
}
- internal async static Task ConfigurePipeline(this WebApplication app)
+ public async static Task ConfigurePipeline(this WebApplication app)
{
if (app.Environment.IsDevelopment())
diff --git a/src/Yavsc/Yavsc.csproj b/src/Yavsc/Yavsc.csproj
index a2238d72..a6a7c6d6 100644
--- a/src/Yavsc/Yavsc.csproj
+++ b/src/Yavsc/Yavsc.csproj
@@ -1,4 +1,4 @@
-
+
net9.0
enable
@@ -7,44 +7,42 @@
76e56fc2-1619-40d8-8393-365258b7a21d
-
- all
+
+ all
-
- all
+
+ all
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
-
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+
\ No newline at end of file
diff --git a/src/sampleWebAsWebApiClient/sampleWebAsWebApiClient.csproj b/src/sampleWebAsWebApiClient/sampleWebAsWebApiClient.csproj
index 854fb0d7..458131a3 100644
--- a/src/sampleWebAsWebApiClient/sampleWebAsWebApiClient.csproj
+++ b/src/sampleWebAsWebApiClient/sampleWebAsWebApiClient.csproj
@@ -4,18 +4,15 @@
enable
enable
-
-
-
+
+
-
true
PreserveNewest
-
-
+
\ No newline at end of file
diff --git a/test/yavscTests/Mandatory/BatchTests.cs b/test/yavscTests/Mandatory/BatchTests.cs
index e77bdca0..077e051a 100644
--- a/test/yavscTests/Mandatory/BatchTests.cs
+++ b/test/yavscTests/Mandatory/BatchTests.cs
@@ -40,7 +40,6 @@ namespace yavscTests
[Fact]
public void GitClone()
{
- Assert.True(_serverFixture.EnsureTestDb());
Assert.NotNull (_serverFixture.DbContext.Project);
var firstProject = _serverFixture.DbContext.Project.Include(p=>p.Repository).FirstOrDefault();
Assert.NotNull (firstProject);
@@ -54,8 +53,6 @@ namespace yavscTests
string gitRepo=null;
private IConfigurationRoot configurationRoot;
-
-
[Fact]
public void HaveConfigurationRoot()
@@ -66,55 +63,12 @@ namespace yavscTests
configurationRoot = builder.Build();
}
-
-
- internal static IConfigurationRoot CreateConfiguration(string prjDir)
- {
- var builder = new ConfigurationBuilder();
-
- builder.AddJsonFile(Path.Combine(prjDir, "appsettings.json"), false);
- builder.AddJsonFile(Path.Combine(prjDir, "appsettings.Development.json"), true);
- return builder.Build();
- }
- static IConfigurationRoot ConfigurationRoot;
- internal static void ConfigureServices
- (ServiceCollection serviceCollection,
- string prjDir,
- out IConfigurationRoot configuration,
- out IServiceProvider provider)
- {
- ConfigurationRoot = configuration = CreateConfiguration(prjDir);
-
- serviceCollection.AddOptions();
- var siteSettingsconf = configuration.GetSection("Site");
- serviceCollection.Configure(siteSettingsconf);
- var smtpSettingsconf = configuration.GetSection("Smtp");
- serviceCollection.Configure(smtpSettingsconf);
- var locOptions = configuration.GetSection("Localization");
- serviceCollection.Configure(locOptions);
-
- serviceCollection.AddSingleton(typeof(ILoggerFactory), typeof(LoggerFactory));
- serviceCollection.AddTransient(typeof(IEmailSender), typeof(MailSender));
-
- serviceCollection.AddLogging();
- serviceCollection.AddMvcCore();
- serviceCollection.AddLocalization(options =>
- {
- options.ResourcesPath = "Resources";
- });
- serviceCollection.AddDbContext(options =>
- options.UseNpgsql(o => ConfigurationRoot.GetConnectionString("DefaultConnection")));
- provider = serviceCollection.BuildServiceProvider();
- }
-
-
public void Dispose()
{
if (gitRepo!=null)
{
Directory.Delete(Path.Combine(gitRepo,"yavsc"), true);
}
- _serverFixture.DropTestDb();
}
}
}
diff --git a/test/yavscTests/NonRegression/Database.cs b/test/yavscTests/NonRegression/Database.cs
index c0b05aef..12157e09 100644
--- a/test/yavscTests/NonRegression/Database.cs
+++ b/test/yavscTests/NonRegression/Database.cs
@@ -5,6 +5,7 @@ using Xunit.Abstractions;
namespace yavscTests.Mandatory
{
+
[Collection("Database")]
[Trait("regression", "II")]
[Trait("dev", "wip")]
@@ -16,29 +17,14 @@ namespace yavscTests.Mandatory
{
this.output = output;
_serverFixture = serverFixture;
- try {
- if (_serverFixture.DbCreated)
-
- _serverFixture.DropTestDb();
-
- }
- catch (Exception)
- {
- output.WriteLine("db not dropped");
- }
- output.WriteLine($"Startup.Testing.ConnectionStrings.Default is {_serverFixture.TestingSetup.ConnectionStrings.Default}");
+
+ output.WriteLine($"Testing connection string is {_serverFixture?.TestingSetup?.ConnectionStrings.DefaultConnection}");
}
///
/// Assuming we're using an account that may create databases,
/// Install all our migrations in a fresh new database.
///
- [Fact]
- public void InstallFromScratchUsingPoweredNpgsqlUser()
- {
- Assert.True(_serverFixture.EnsureTestDb());
- Assert.True(_serverFixture.UpgradeDb()==0);
- }
public void Dispose()
{
diff --git a/test/yavscTests/Settings/DbConnectionSettings.cs b/test/yavscTests/Settings/DbConnectionSettings.cs
index 1c11ebf3..ad2e43c0 100644
--- a/test/yavscTests/Settings/DbConnectionSettings.cs
+++ b/test/yavscTests/Settings/DbConnectionSettings.cs
@@ -2,7 +2,6 @@ namespace yavscTests.Settings
{
public class DbConnectionSettings
{
- public string DatabaseCtor { get; set; }
- public string Default { get; set; }
+ public string? DefaultConnection { get; set; }
}
}
diff --git a/test/yavscTests/WebServerFixture.cs b/test/yavscTests/WebServerFixture.cs
index e7fbe22c..57626891 100644
--- a/test/yavscTests/WebServerFixture.cs
+++ b/test/yavscTests/WebServerFixture.cs
@@ -1,5 +1,6 @@
using System.Net;
using Microsoft.AspNetCore;
+using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Hosting.Server;
using Microsoft.AspNetCore.Hosting.Server.Features;
@@ -13,6 +14,8 @@ using Yavsc;
using Yavsc.Models;
using Yavsc.Services;
using yavscTests.Settings;
+using Yavsc.Extensions;
+using Microsoft.EntityFrameworkCore;
namespace isnd.tests
{
@@ -20,12 +23,14 @@ namespace isnd.tests
[CollectionDefinition("Web server collection")]
public class WebServerFixture : IDisposable
{
- public IWebHost Host { get; private set;}
public List Addresses { get; private set; } = new List();
public Microsoft.Extensions.Logging.ILogger Logger { get; internal set; }
private SiteSettings siteSettings;
+ public IConfigurationRoot Configuration { get; private set; }
+
+ private WebApplication app;
public string TestingUserName { get; private set; }
public string ProtectedTestingApiKey { get; internal set; }
@@ -38,34 +43,41 @@ namespace isnd.tests
public WebServerFixture()
{
- SetupHost();
+ SetupHost().Wait();
}
public void Dispose()
{
- Host.StopAsync().Wait();
- Host.Dispose();
+ if (app!=null)
+ app.StopAsync().Wait();
}
- public void SetupHost()
+ public async Task SetupHost()
{
- var builder = WebHost.CreateDefaultBuilder(new string[0]);
+ var builder = WebApplication.CreateBuilder();
+
+ Configuration = builder.Configuration
+ .AddJsonFile("appsettings.json")
+ .AddJsonFile($"appsettings.{builder.Environment.EnvironmentName}.json", optional: true)
+ .AddEnvironmentVariables()
+ .Build();
- // .UseContentRoot("../../../../../src/isnd")
- builder.UseStartup(typeof(Startup))
- .ConfigureAppConfiguration((builderContext, config) =>
+ this.app = builder.ConfigureWebAppServices();
+ using (var migrationScope = app.Services.CreateScope())
{
- config.AddJsonFile("appsettings.json", true);
- config.AddJsonFile("appsettings.Development.json", false);
- });
+ var db = migrationScope.ServiceProvider.GetRequiredService();
+ await db.Database.MigrateAsync();
+ }
+ await app.ConfigurePipeline();
+ app.UseSession();
+ await app.StartAsync();
+
+
- Host = builder.Build();
-
- var logFactory = Host.Services.GetRequiredService();
+ var logFactory = app.Services.GetRequiredService();
Logger = logFactory.CreateLogger();
- Host.Start(); //Starts listening on the configured addresses.
- var server = Host.Services.GetRequiredService();
+ var server = app.Services.GetRequiredService();
var addressFeatures = server.Features.Get();
@@ -73,12 +85,13 @@ namespace isnd.tests
{
Addresses.Add(address);
}
- SiteSettings = Host.Services.GetRequiredService>().Value;
+ SiteSettings = app.Services.GetRequiredService>().Value;
- using IServiceScope scope = Host.Services.CreateScope();
+ using IServiceScope scope = app.Services.CreateScope();
ApplicationDbContext dbContext =
scope.ServiceProvider.GetRequiredService();
-
+ //dbContext.Database.EnsureCreated();
+ dbContext.Database.Migrate();
TestingUserName = "Tester";
TestingUser = dbContext.Users.FirstOrDefault(u => u.UserName == TestingUserName);
@@ -93,7 +106,7 @@ namespace isnd.tests
{
if (TestingUser == null)
{
- using IServiceScope scope = Host.Services.CreateScope();
+ using IServiceScope scope = app.Services.CreateScope();
var userManager =
scope.ServiceProvider.GetRequiredService>();
@@ -114,19 +127,6 @@ namespace isnd.tests
}
}
- internal void DropTestDb()
- {
- throw new NotImplementedException();
- }
- internal bool EnsureTestDb()
- {
- throw new NotImplementedException();
- }
-
- internal int UpgradeDb()
- {
- throw new NotImplementedException();
- }
}
}
diff --git a/test/yavscTests/appsettings.json b/test/yavscTests/appsettings.json
index 02914457..383712b6 100644
--- a/test/yavscTests/appsettings.json
+++ b/test/yavscTests/appsettings.json
@@ -41,9 +41,8 @@
}
},
"ConnectionStrings": {
- "Default": "Server=lame-NpgsqlHostName;Port=5432;Database=lame-DataBase;Username=lame-Username;Password=lame-dbPassword;",
- "DatabaseCtor": "Server=lame-NpgsqlHostName;Port=5432;Database=lame-ctor-DataBase;Username=lame-ctor-Username;Password=lame-ctordbPassword;"
- },
+ "DefaultConnection": "Server=lame-NpgsqlHostName;Port=5432;Database=lame-DataBase;Username=lame-Username;Password=lame-dbPassword;",
+ },
"DataProtection": {
"Keys": {
"Dir": "DataProtection-Keys"
diff --git a/test/yavscTests/yavscTests.csproj b/test/yavscTests/yavscTests.csproj
index d7cb966b..a1135b78 100644
--- a/test/yavscTests/yavscTests.csproj
+++ b/test/yavscTests/yavscTests.csproj
@@ -1,26 +1,32 @@
-
net9.0
enable
enable
+ false
-
-
-
-
-
-
-
-
-
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/yavsc.sln b/yavsc.sln
index 710b9674..19b3666d 100644
--- a/yavsc.sln
+++ b/yavsc.sln
@@ -1,4 +1,4 @@
-
+
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
@@ -21,6 +21,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{27336229-4
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "yavscTests", "test\yavscTests\yavscTests.csproj", "{D565C5C8-19A6-4134-A18B-FE71986FBA35}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution items", "Solution items", "{9EB76B06-CA8E-4211-A16D-6646ED584311}"
+ ProjectSection(SolutionItems) = preProject
+ Directory.Packages.props = Directory.Packages.props
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU