CrazyIter_Bin 5 mesiacov pred
rodič
commit
2883446a4f

+ 17 - 0
AzureCosmosDBEmulator/AzureCosmosDBEmulator.csproj

@@ -0,0 +1,17 @@
+<Project Sdk="Microsoft.NET.Sdk.Web">
+
+  <PropertyGroup>
+    <TargetFramework>net8.0</TargetFramework>
+    <Nullable>enable</Nullable>
+    <ImplicitUsings>enable</ImplicitUsings>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Microsoft.Azure.Cosmos" Version="3.41.0" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\TEAMModelOS.SDK\TEAMModelOS.SDK.csproj" />
+  </ItemGroup>
+
+</Project>

+ 6 - 0
AzureCosmosDBEmulator/AzureCosmosDBEmulator.http

@@ -0,0 +1,6 @@
+@AzureCosmosDBEmulator_HostAddress = http://localhost:5048
+
+GET {{AzureCosmosDBEmulator_HostAddress}}/weatherforecast/
+Accept: application/json
+
+###

+ 82 - 0
AzureCosmosDBEmulator/Controllers/WeatherForecastController.cs

@@ -0,0 +1,82 @@
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Azure.Cosmos;
+using System.Net;
+using System.Text.Json;
+using TEAMModelOS.SDK.DI;
+using TEAMModelOS.SDK.Extension;
+
+namespace AzureCosmosDBEmulator.Controllers
+{
+    [ApiController]
+    [Route("[controller]")]
+    public class WeatherForecastController : ControllerBase
+    {
+
+        private readonly AzureCosmosFactory _azureCosmos;
+        private static readonly string[] Summaries = new[]
+        {
+            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
+        };
+
+        private readonly ILogger<WeatherForecastController> _logger;
+
+        public WeatherForecastController(ILogger<WeatherForecastController> logger, AzureCosmosFactory azureCosmos)
+        {
+            _logger = logger;
+            _azureCosmos = azureCosmos;
+        }
+
+        [HttpGet]
+        public async Task<IActionResult> Get()
+        {
+           
+            //https://cosmosdb.teammodel.cn/_explorer/index.html
+
+            //var result= await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<dynamic>("select value c from c where 1=1");
+            //return Ok(new { result.list });
+
+            CosmosClient client = null ;
+            Database database = null;
+            Container container = null ;
+            try
+            {
+                CosmosClientOptions options = new()
+                {
+                    HttpClientFactory = () => new HttpClient(new HttpClientHandler()
+                    {
+                        ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
+                    }),
+                    ConnectionMode = ConnectionMode.Gateway,
+                };
+
+                client = new CosmosClient("AccountEndpoint=https://163.228.141.122:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==", 
+                    options);
+                database =  client.GetDatabase(Constant.TEAMModelOS);
+               // await database.CreateContainerIfNotExistsAsync(new ContainerProperties() {  Id="School", PartitionKeyPath="/code"});
+                container=database.GetContainer(Constant.Common);
+            }
+            catch (Exception ex) { 
+                Console.WriteLine(ex);
+            }
+            try
+            {
+                var items = container.GetItemQueryStreamIterator(
+                 queryText: "select value c from c where 1=1", continuationToken: null,
+                    requestOptions: null);
+                while (items.HasMoreResults)
+                {
+                    var response = await items.ReadNextAsync();
+                    if (response.Content!=null)
+                    {
+                        return Ok(new {json= JsonDocument.Parse(response.Content).RootElement }); 
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine(ex);
+            }
+            return Ok();
+        }
+    }
+}

+ 29 - 0
AzureCosmosDBEmulator/Program.cs

@@ -0,0 +1,29 @@
+using TEAMModelOS.SDK.DI;
+
+namespace AzureCosmosDBEmulator
+{
+    public class Program
+    {
+        public static void Main(string[] args)
+        {
+            var builder = WebApplication.CreateBuilder(args);
+
+            // Add services to the container.
+
+            builder.Services.AddControllers();
+            builder.Services.AddAzureCosmos("AccountEndpoint=https://cosmosdb.teammodel.cn/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==");
+            var app = builder.Build();
+
+            // Configure the HTTP request pipeline.
+
+            app.UseHttpsRedirection();
+
+            app.UseAuthorization();
+
+
+            app.MapControllers();
+
+            app.Run();
+        }
+    }
+}

+ 41 - 0
AzureCosmosDBEmulator/Properties/launchSettings.json

@@ -0,0 +1,41 @@
+{
+  "$schema": "http://json.schemastore.org/launchsettings.json",
+  "iisSettings": {
+    "windowsAuthentication": false,
+    "anonymousAuthentication": true,
+    "iisExpress": {
+      "applicationUrl": "http://localhost:11719",
+      "sslPort": 44357
+    }
+  },
+  "profiles": {
+    "http": {
+      "commandName": "Project",
+      "dotnetRunMessages": true,
+      "launchBrowser": true,
+      "launchUrl": "weatherforecast",
+      "applicationUrl": "http://localhost:5048",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    },
+    "https": {
+      "commandName": "Project",
+      "dotnetRunMessages": true,
+      "launchBrowser": true,
+      "launchUrl": "weatherforecast",
+      "applicationUrl": "https://localhost:7299;http://localhost:5048",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    },
+    "IIS Express": {
+      "commandName": "IISExpress",
+      "launchBrowser": true,
+      "launchUrl": "weatherforecast",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    }
+  }
+}

+ 13 - 0
AzureCosmosDBEmulator/WeatherForecast.cs

@@ -0,0 +1,13 @@
+namespace AzureCosmosDBEmulator
+{
+    public class WeatherForecast
+    {
+        public DateOnly Date { get; set; }
+
+        public int TemperatureC { get; set; }
+
+        public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
+
+        public string? Summary { get; set; }
+    }
+}

+ 8 - 0
AzureCosmosDBEmulator/appsettings.Development.json

@@ -0,0 +1,8 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  }
+}

+ 9 - 0
AzureCosmosDBEmulator/appsettings.json

@@ -0,0 +1,9 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  },
+  "AllowedHosts": "*"
+}

+ 10 - 0
IES.ExamServer/App.xaml

@@ -0,0 +1,10 @@
+<Application x:Class="IES.ExamServer.App"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:local="clr-namespace:IES.ExamServer"
+             Startup="ApplicationStartup">
+    <!-- 这里将 StartupUri 属性删除,然后注册 Startup 事件 -->
+    <Application.Resources>
+
+    </Application.Resources>
+</Application>

+ 59 - 0
IES.ExamServer/App.xaml.cs

@@ -0,0 +1,59 @@
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.StaticFiles;
+using Microsoft.Extensions.DependencyInjection;
+using System.Windows;
+
+namespace IES.ExamServer
+{
+    public partial class App : Application, IAsyncDisposable
+    {
+        public WebApplication? WebApplication { get; private set; }
+
+        public async ValueTask DisposeAsync()
+        {
+            if (WebApplication is not null)
+            {
+                await WebApplication.DisposeAsync();
+            }
+            GC.SuppressFinalize(this);
+        }
+
+        private async void ApplicationStartup(object sender, StartupEventArgs e)
+        {
+            // 这里是创建 ASP.NET 版通用主机的代码
+            var builder = WebApplication.CreateBuilder(Environment.GetCommandLineArgs());
+            builder.WebHost.UseUrls("http://*:5000;https://*:5001");
+            // 注册主窗口和其他服务
+            builder.Services.AddControllersWithViews();
+            builder.Services.AddSingleton<MainWindow>();
+            builder.Services.AddSingleton(this);
+            var app = builder.Build();
+            // 这里是文件类型映射,如果你的静态文件在浏览器中加载报 404,那么需要在这里注册,这里我加载一个 3D 场景文件的类型
+            var contentTypeProvider = new FileExtensionContentTypeProvider();
+            contentTypeProvider.Mappings[".glb"] = "model/gltf-binary";
+            app.UseStaticFiles(new StaticFileOptions
+            {
+                ContentTypeProvider = contentTypeProvider,
+            });
+            // 你如果使用了 Vue Router 或者其他前端路由了,需要在这里添加这句话让路由返回前端,而不是 ASP.NET Core 处理
+            app.MapFallbackToFile("/index.html");
+            //PRODUCTION uses webpack static files
+
+            app.UseRouting();
+            app.UseHttpsRedirection(); //開發中暫時關掉
+            //如果应用使用身份验证/授权功能(如 AuthorizePage 或 [Authorize]),请将对 UseAuthentication 和 UseAuthorization的
+            //调用放在之后、UseRouting 和 UseCors,但在 UseEndpoints之前
+            app.UseAuthentication();
+            app.UseAuthorization();
+            app.MapControllers();
+            WebApplication = app;
+            // 处理退出事件,退出 App 时关闭 ASP.NET Core
+            Exit += async (s, e) => await WebApplication.StopAsync();
+            // 显示主窗口
+            MainWindow = app.Services.GetRequiredService<MainWindow>();
+            MainWindow.Show();
+            await app.RunAsync().ConfigureAwait(false);
+        }
+    }
+}

+ 10 - 0
IES.ExamServer/AssemblyInfo.cs

@@ -0,0 +1,10 @@
+using System.Windows;
+
+[assembly: ThemeInfo(
+    ResourceDictionaryLocation.None,            //where theme specific resource dictionaries are located
+                                                //(used if a resource is not found in the page,
+                                                // or application resource dictionaries)
+    ResourceDictionaryLocation.SourceAssembly   //where the generic resource dictionary is located
+                                                //(used if a resource is not found in the page,
+                                                // app, or any theme specific resource dictionaries)
+)]

+ 15 - 0
IES.ExamServer/Controllers/HomeController.cs

@@ -0,0 +1,15 @@
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IES.ExamServer.Controllers
+{
+    public class HomeController
+    {
+        [HttpGet("/hello")]
+        public string Get() => "Hello World";
+    }
+}

+ 27 - 0
IES.ExamServer/IES.ExamServer.csproj

@@ -0,0 +1,27 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>WinExe</OutputType>
+    <TargetFramework>net8.0-windows</TargetFramework>
+    <Nullable>enable</Nullable>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <UseWPF>true</UseWPF>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
+    <PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.1" />
+    <PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="8.0.1" />
+    <PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.1" />
+    <PackageReference Include="Microsoft.Web.WebView2" Version="1.0.2903.40" />
+  </ItemGroup>
+  <ItemGroup>
+	<FrameworkReference Include="Microsoft.AspNetCore.App" />
+  </ItemGroup>
+  <ItemGroup>
+	<!-- 这里模仿 ASP.NET Core,将 SPA 资源文件存于 wwwroot 文件夹下 -->
+	<None Update="wwwroot\**">
+		<CopyToOutputDirectory>Always</CopyToOutputDirectory>
+	</None>
+  </ItemGroup>
+</Project>

+ 17 - 0
IES.ExamServer/MainWindow.xaml

@@ -0,0 +1,17 @@
+<Window x:Class="IES.ExamServer.MainWindow"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:IES.ExamServer"
+        xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"
+        mc:Ignorable="d"
+        Title="醍摩豆局域网评测服务端" Height="450" Width="800" SnapsToDevicePixels="True"    ShowInTaskbar="True" WindowStyle="None"
+        WindowStartupLocation="CenterScreen" Topmost="False" AllowsTransparency="True"  Background="White">
+    <!-- 在上面加入 xmlns:wv2 属性用于引用 WebView2 控件 -->
+    <Grid>
+        <!-- 这里插入 WebView2 控件,我们默认可以让 Source 是 http://localhost:5000,这是 ASP.NET Core 的默认监听地址 -->
+        <wv2:WebView2 Name="webView"
+          Source="{Binding SourceUrl, FallbackValue='https://localhost:5000'}" AllowDrop="True" SnapsToDevicePixels="True"/>
+    </Grid>
+</Window>

+ 36 - 0
IES.ExamServer/MainWindow.xaml.cs

@@ -0,0 +1,36 @@
+using Microsoft.AspNetCore.Hosting.Server.Features;
+using Microsoft.AspNetCore.Hosting.Server;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Security.Policy;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+
+namespace IES.ExamServer
+{
+    /// <summary>
+    /// MainWindow.xaml 的交互逻辑
+    /// </summary>
+    public partial class MainWindow : Window
+    {
+        public string SourceUrl { get; set; }
+        public MainWindow(IServer server)
+        {
+            InitializeComponent();
+            // 这里通过注入的 IServer 对象来获取监听的 Url
+            var addresses = server.Features.Get<IServerAddressesFeature>()?.Addresses;
+            SourceUrl = addresses is not null ? (addresses.FirstOrDefault() ?? "https://localhost:5001/") : "https://localhost:5001";
+            // 无 VM,用自身当 VM
+            DataContext = this;
+        }
+    }
+}

+ 19 - 0
IES.ExamServer/appsettings.json

@@ -0,0 +1,19 @@
+{
+  "AllowedHosts": "*",
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "System.Net.Http.HttpClient": "Warning"
+    }
+  },
+  "Kestrel": {
+    "Endpoints": {
+      "Http": {
+        "Url": "http://localhost:5000"
+      },
+      "Https": {
+        "Url": "https://localhost:5001"
+      }
+    }
+  }
+}

+ 33 - 0
IES.HybridCloud/Controllers/WeatherForecastController.cs

@@ -0,0 +1,33 @@
+using Microsoft.AspNetCore.Mvc;
+
+namespace IES.HybridCloud.Controllers
+{
+    [ApiController]
+    [Route("[controller]")]
+    public class WeatherForecastController : ControllerBase
+    {
+        private static readonly string[] Summaries = new[]
+        {
+            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
+        };
+
+        private readonly ILogger<WeatherForecastController> _logger;
+
+        public WeatherForecastController(ILogger<WeatherForecastController> logger)
+        {
+            _logger = logger;
+        }
+
+        [HttpGet]
+        public IEnumerable<WeatherForecast> Get()
+        {
+            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
+            {
+                Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
+                TemperatureC = Random.Shared.Next(-20, 55),
+                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
+            })
+            .ToArray();
+        }
+    }
+}

+ 9 - 0
IES.HybridCloud/IES.HybridCloud.csproj

@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk.Web">
+
+  <PropertyGroup>
+    <TargetFramework>net8.0</TargetFramework>
+    <Nullable>enable</Nullable>
+    <ImplicitUsings>enable</ImplicitUsings>
+  </PropertyGroup>
+
+</Project>

+ 6 - 0
IES.HybridCloud/IES.HybridCloud.http

@@ -0,0 +1,6 @@
+@IES.HybridCloud_HostAddress = http://localhost:5269
+
+GET {{IES.HybridCloud_HostAddress}}/weatherforecast/
+Accept: application/json
+
+###

+ 27 - 0
IES.HybridCloud/Program.cs

@@ -0,0 +1,27 @@
+namespace IES.HybridCloud
+{
+    public class Program
+    {
+        public static void Main(string[] args)
+        {
+            var builder = WebApplication.CreateBuilder(args);
+
+            // Add services to the container.
+
+            builder.Services.AddControllers();
+
+            var app = builder.Build();
+
+            // Configure the HTTP request pipeline.
+
+            app.UseHttpsRedirection();
+
+            app.UseAuthorization();
+
+
+            app.MapControllers();
+
+            app.Run();
+        }
+    }
+}

+ 41 - 0
IES.HybridCloud/Properties/launchSettings.json

@@ -0,0 +1,41 @@
+{
+  "$schema": "http://json.schemastore.org/launchsettings.json",
+  "iisSettings": {
+    "windowsAuthentication": false,
+    "anonymousAuthentication": true,
+    "iisExpress": {
+      "applicationUrl": "http://localhost:38013",
+      "sslPort": 44374
+    }
+  },
+  "profiles": {
+    "http": {
+      "commandName": "Project",
+      "dotnetRunMessages": true,
+      "launchBrowser": true,
+      "launchUrl": "weatherforecast",
+      "applicationUrl": "http://localhost:5269",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    },
+    "https": {
+      "commandName": "Project",
+      "dotnetRunMessages": true,
+      "launchBrowser": true,
+      "launchUrl": "weatherforecast",
+      "applicationUrl": "https://localhost:7114;http://localhost:5269",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    },
+    "IIS Express": {
+      "commandName": "IISExpress",
+      "launchBrowser": true,
+      "launchUrl": "weatherforecast",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    }
+  }
+}

+ 13 - 0
IES.HybridCloud/WeatherForecast.cs

@@ -0,0 +1,13 @@
+namespace IES.HybridCloud
+{
+    public class WeatherForecast
+    {
+        public DateOnly Date { get; set; }
+
+        public int TemperatureC { get; set; }
+
+        public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
+
+        public string? Summary { get; set; }
+    }
+}

+ 8 - 0
IES.HybridCloud/appsettings.Development.json

@@ -0,0 +1,8 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  }
+}

+ 9 - 0
IES.HybridCloud/appsettings.json

@@ -0,0 +1,9 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  },
+  "AllowedHosts": "*"
+}

+ 1 - 0
TEAMModelOS.Function/IESTimerTrigger.cs

@@ -92,6 +92,7 @@ namespace TEAMModelOS.Function
                     if (local!.Contains("China"))
                     {
                         location = "China";
+                        return;
                     }
                     else if (local.Contains("Global"))
                     {

+ 22 - 1
TEAMModelOS.sln

@@ -29,7 +29,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HTEX.Test", "TEAMModelOS.Ex
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HTEX.DataETL", "HTEX.DataETL\HTEX.DataETL.csproj", "{1F30D9C2-3E52-4E7C-AE46-8C13916153D2}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IESHybridCloud", "IESHybridCloud\IESHybridCloud.csproj", "{A76FCB84-C9FF-46C6-8B82-FC7538779A98}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IESHybridCloud", "IESHybridCloud\IESHybridCloud.csproj", "{A76FCB84-C9FF-46C6-8B82-FC7538779A98}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AzureCosmosDBEmulator", "AzureCosmosDBEmulator\AzureCosmosDBEmulator.csproj", "{5A3E1C89-D2BA-4758-A017-189811E0935F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IES.HybridCloud", "IES.HybridCloud\IES.HybridCloud.csproj", "{0FC9DE8A-488B-4ACD-88D5-8DEDECA1FF42}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IES.ExamServer", "IES.ExamServer\IES.ExamServer.csproj", "{68B47A7A-880E-4967-85BA-89F37CEBAB93}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -91,6 +97,18 @@ Global
 		{A76FCB84-C9FF-46C6-8B82-FC7538779A98}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{A76FCB84-C9FF-46C6-8B82-FC7538779A98}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A76FCB84-C9FF-46C6-8B82-FC7538779A98}.Release|Any CPU.Build.0 = Release|Any CPU
+		{5A3E1C89-D2BA-4758-A017-189811E0935F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5A3E1C89-D2BA-4758-A017-189811E0935F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{5A3E1C89-D2BA-4758-A017-189811E0935F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5A3E1C89-D2BA-4758-A017-189811E0935F}.Release|Any CPU.Build.0 = Release|Any CPU
+		{0FC9DE8A-488B-4ACD-88D5-8DEDECA1FF42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0FC9DE8A-488B-4ACD-88D5-8DEDECA1FF42}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{0FC9DE8A-488B-4ACD-88D5-8DEDECA1FF42}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{0FC9DE8A-488B-4ACD-88D5-8DEDECA1FF42}.Release|Any CPU.Build.0 = Release|Any CPU
+		{68B47A7A-880E-4967-85BA-89F37CEBAB93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{68B47A7A-880E-4967-85BA-89F37CEBAB93}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{68B47A7A-880E-4967-85BA-89F37CEBAB93}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{68B47A7A-880E-4967-85BA-89F37CEBAB93}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -105,6 +123,9 @@ Global
 		{0AB3F94D-9698-4DB1-B532-5E6C8E56F770} = {9B74B53F-20E8-46CC-903B-62AEB1583DD7}
 		{1F30D9C2-3E52-4E7C-AE46-8C13916153D2} = {9B74B53F-20E8-46CC-903B-62AEB1583DD7}
 		{A76FCB84-C9FF-46C6-8B82-FC7538779A98} = {9B74B53F-20E8-46CC-903B-62AEB1583DD7}
+		{5A3E1C89-D2BA-4758-A017-189811E0935F} = {9B74B53F-20E8-46CC-903B-62AEB1583DD7}
+		{0FC9DE8A-488B-4ACD-88D5-8DEDECA1FF42} = {9B74B53F-20E8-46CC-903B-62AEB1583DD7}
+		{68B47A7A-880E-4967-85BA-89F37CEBAB93} = {9B74B53F-20E8-46CC-903B-62AEB1583DD7}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {76440725-5E50-4288-851F-BA5C0BC8E8C6}