添加VS项目

master
ruyu 7 years ago
parent be910108d9
commit 4522cb70b3

@ -0,0 +1,31 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27703.2000
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Study.WebApi", "Study.WebApi\Study.WebApi.csproj", "{9601789A-D64E-4A55-A328-FEDDFE8FDD2B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Study.XUnitTest", "Study.XUnitTest\Study.XUnitTest.csproj", "{F089A6B8-72B8-46D1-BFB9-8202D238E50F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9601789A-D64E-4A55-A328-FEDDFE8FDD2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9601789A-D64E-4A55-A328-FEDDFE8FDD2B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9601789A-D64E-4A55-A328-FEDDFE8FDD2B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9601789A-D64E-4A55-A328-FEDDFE8FDD2B}.Release|Any CPU.Build.0 = Release|Any CPU
{F089A6B8-72B8-46D1-BFB9-8202D238E50F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F089A6B8-72B8-46D1-BFB9-8202D238E50F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F089A6B8-72B8-46D1-BFB9-8202D238E50F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F089A6B8-72B8-46D1-BFB9-8202D238E50F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {5ACAFD17-DAE5-4D86-BBA4-795056BE8D2F}
EndGlobalSection
EndGlobal

@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
namespace Study.WebApi.Controllers
{
[Route("api/[controller]")]
public class ValuesController : Controller
{
// GET api/values
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
[HttpGet("{id}")]
public string Get(int id)
{
return "value";
}
// POST api/values
[HttpPost]
public void Post([FromBody]string value)
{
}
// PUT api/values/5
[HttpPut("{id}")]
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
[HttpDelete("{id}")]
public void Delete(int id)
{
}
}
}

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
namespace Study.WebApi
{
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}
}

@ -0,0 +1,29 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:7344/",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "api/values",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Study.WebApi": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "api/values",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:7345/"
}
}
}

@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
namespace Study.WebApi
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvc();
}
}
}

@ -0,0 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.8" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
</ItemGroup>
</Project>

@ -0,0 +1,10 @@
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
}
}

@ -0,0 +1,15 @@
{
"Logging": {
"IncludeScopes": false,
"Debug": {
"LogLevel": {
"Default": "Warning"
}
},
"Console": {
"LogLevel": {
"Default": "Warning"
}
}
}
}

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
</configuration>

@ -0,0 +1,11 @@
{
"AppConfiguration": {
"MainWindow": {
"Height": "400",
"Width": "600",
"Top": "0",
"Left": "0"
},
"ConnectionString":"Server=(localdb)\\\\mssqllocaldb;Database=DatabaseName;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}

@ -0,0 +1,48 @@
using System;
using System.Linq;
using Microsoft.Extensions.Configuration;
using Xunit;
namespace Study.XUnitTest
{
public class ConfigrationTest
{
[Fact]
public void Test1()
{
CustomProviderStudy sudyProvider=new CustomProviderStudy();
var customConfiguration= sudyProvider.BuildConfigurationFromInMemoryCollection();
Assert.Equal(Environment.UserName, customConfiguration["Profile:UserName"]);
Assert.Equal("love", customConfiguration["Profile:UserName"]);
Assert.Equal(400, customConfiguration.GetValue<int>("AppConfiguration:MainWindow:Height"));
Assert.Equal(600, customConfiguration.GetValue<int>("AppConfiguration:MainWindow:Width"));
Assert.Equal(0, customConfiguration.GetValue<int>("AppConfiguration:MainWindow:Top"));
Assert.Equal(0, customConfiguration.GetValue<int>("AppConfiguration:MainWindow:Left"));
Assert.Contains("localdb", customConfiguration.GetValue<string>("AppConfiguration:ConnectionString"));
}
[Fact]
public void AppJsonTest()
{
CustomProviderStudy sudyProvider = new CustomProviderStudy();
var appJsonConfiguration = sudyProvider.BuildProviderFromAppJson();
Assert.NotNull(appJsonConfiguration);
//Assert.True(appJsonConfiguration.GetSection("club") != null);
}
[Fact]
public void BuildJsonTest()
{
CustomProviderStudy customProvider=new CustomProviderStudy();
var cc = customProvider.BuildProviderFromJson();
var dd= cc.GetChildren();
Assert.NotNull(cc);
Assert.NotNull(dd);
}
}
}

@ -0,0 +1,128 @@
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.Json;
using Microsoft.Extensions.Configuration.FileExtensions;
using Microsoft.Extensions.Configuration.EnvironmentVariables;
using Microsoft.Extensions.Configuration.Memory;
using Microsoft.Extensions.Configuration.Binder;
using Microsoft.Extensions.Configuration.CommandLine;
using Microsoft.Extensions.Configuration.Ini;
using Microsoft.Extensions.Configuration.Xml;
using Microsoft.Extensions.Configuration.UserSecrets;
namespace Study.XUnitTest
{
/// <summary>
/// ConfigurationProvider 使用学习
/// Microsoft.Extensions.Configuration 可用Nuget获取
/// InMemoryConfigurationProvider
/// 适用于 Config.json 的 JsonFileConfigurationProvider
/// 适用于 Config.Production.json 的 JsonFileConfigurationProvider
/// EnvironmentVariableConfigurationProvider
/// CommandLineConfigurationProvider
/// </summary>
/// <example>https://msdn.microsoft.com/magazine/mt632279</example>
/// <example>https://www.cnblogs.com/artech/p/asp-net-core-config-4-1.html</example>
public class CustomProviderStudy
{
public IConfiguration ConfigurationFromDictionary()
{
Dictionary<string, string> source = new Dictionary<string, string>
{
["LongDatePattern"] = "dddd, MMMM d, yyyy",
["LongTimePattern"] = "h:mm:ss tt",
["ShortDatePattern"] = "M/d/yyyy",
["ShortTimePattern"] = "h:mm tt"
};
ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
configurationBuilder.AddInMemoryCollection(GetDictionary());
var configuration = configurationBuilder.Build();
return configuration;
}
public IConfiguration BuildConfigurationFromInMemoryCollection()
{
ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
// 添加默认连接 内存中.NET对象
configurationBuilder.AddInMemoryCollection(GetDictionary());
IConfiguration configuration = configurationBuilder.Build();
return configuration;
}
public IConfiguration BuildProviderFromObject()
{
ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
configurationBuilder
.AddInMemoryCollection(GetDictionary())
.AddJsonFile("Config.json", true)
.AddEnvironmentVariables("EssentialDotNetConfiguration")
.AddIniFile("", true, true)
.AddXmlFile("", true, true)
.AddCommandLine(new string[]{"1","2"});
return configurationBuilder.Build();
}
public IConfigurationProvider BuildProviderFromXml()
{
return null;
}
public IConfiguration BuildProviderFromIni()
{
return null;
}
public IConfiguration BuildProviderFromAppCOnfig()
{
return null;
}
public IConfiguration BuildProviderFromJson()
{
JsonConfigurationSource source = new JsonConfigurationSource();
source.Path = "App.json";
JsonConfigurationProvider jsonConfigurationProvider = new JsonConfigurationProvider(source);
jsonConfigurationProvider.Load();
return null;
}
public IConfiguration BuildProviderFromAppJson()
{
return null;
}
/// <summary>
/// 字典
/// </summary>
private static IReadOnlyDictionary<string, string> GetDictionary()
{
IReadOnlyDictionary<string, string> DefaultConfigurationStrings =
new Dictionary<string, string>()
{
["Profile:UserName"] = Environment.UserName,
[$"AppConfiguration:ConnectionString"] = GetDefaultionString(),
[$"AppConfiguration:MainWindow:Height"] = "400",
[$"AppConfiguration:MainWindow:Width"] = "600",
[$"AppConfiguration:MainWindow:Top"] = "0",
[$"AppConfiguration:MainWindow:Left"] = "0",
};
return DefaultConfigurationStrings;
}
/// <summary>
/// MsSQL连接字串
/// </summary>
private static string GetDefaultionString()
{
return @"Server = (localdb)\\mssqllocaldb; Database = SampleData; Trusted_Connection = True; MultipleActiveResultSets = true";
}
}
}

@ -0,0 +1,37 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration" Version="2.0.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="2.0.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.0.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.0.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.Ini" Version="2.0.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="2.0.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.Xml" Version="2.0.2" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.2" />
<PackageReference Include="xunit" Version="2.3.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Study.WebApi\Study.WebApi.csproj" />
</ItemGroup>
<ItemGroup>
<None Update="App.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="App.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
Loading…
Cancel
Save