Commit 6a41da5c authored by Helgi Hafþórsson's avatar Helgi Hafþórsson
Browse files

Stuff added and changed

parent fd08f6f9
......@@ -15,7 +15,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{22873875-9
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Marsonsoft.Database.Tests", "test\Marsonsoft.Database.Tests\Marsonsoft.Database.Tests.csproj", "{7D9B2CBD-DB01-4EE6-9743-68B0590D844D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Marsonsoft.Database.MySql", "Marsonsoft.Database.MySql\Marsonsoft.Database.MySql.csproj", "{1D5D70B3-364D-4625-AD79-C5BFD08AA9ED}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Marsonsoft.Database.MySql", "src\Marsonsoft.Database.MySql\Marsonsoft.Database.MySql.csproj", "{1D5D70B3-364D-4625-AD79-C5BFD08AA9ED}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
......
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="TestConnection" providerName="ConnnectionTestProvider" connectionString="Data Source=myDataSource;User Id=myUserId;Password=myPassword;" />
</connectionStrings>
<appSettings>
<add key="Landsbanki.Framework.Data.DatabaseConnection" value="TestConnection"/>
<add key="Landsbanki.Framework.Data.ProviderInvariantName" value="TestProviderInvariantName"/>
</appSettings>
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client"/>
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
<add name="Oracle Data Provider for .NET, Native" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET Version 11.1.7" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=2.111.7.0, Culture=neutral, PublicKeyToken=89B483F429C47342" />
</DbProviderFactories>
</system.data>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<publisherPolicy apply="no"/>
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral"/>
<bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.121.2.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/>
</startup>
</configuration>
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Collections.Generic;
using System.Linq;
namespace Landsbanki.Framework.Data.Test
{
[TestClass]
public class IntegrationTests
{
private const string DefaultConnectionName = "DefaultConnection";
private const string OtherConnectionName = "OtherConnection";
private const string OracleManagedProviderName = "Oracle.ManagedDataAccess.Client";
private const string OracleNativeProviderName = "Oracle.DataAccess.Client";
private const string IntegrationTestConnectionStringNoPass = "Data Source=isdev01;User Id=sys_datatest;";
private const string IntegrationTestConnectionString = IntegrationTestConnectionStringNoPass + "Password=sys_datatest7;";
private const string SelectSysdateSql = "SELECT SYSDATE FROM DUAL";
[TestMethod]
public void ShouldUseDefaultConnectionStringName()
{
//<connectionStrings>
// <add name="DefaultConnection" providerName="Oracle.ManagedDataAccess.Client" connectionString="Data Source=myDataSource;User Id=myUserId;Password=myPassword;"/>
//</connectionStrings>
var infos = new TestConnectionStringInfoProvider
{
DefaultName = DefaultConnectionName,
Infos = new List<ConnectionStringInfo>
{
new ConnectionStringInfo
{
Name = DefaultConnectionName,
ProviderName = OracleManagedProviderName,
ConnectionString = IntegrationTestConnectionString
}
}
};
var dataEnvironmentProvider = new DataEnvironmentProvider(infos);
var dataEnvironment = dataEnvironmentProvider.GetDefault();
using (var connection = dataEnvironment.ConnectionProvider.OpenConnection())
{
}
}
[TestMethod]
public void ShouldUseDefaultConnectionStringNameAndNamedProviderWhenProviderMissing()
{
//<connectionStrings>
// <add name="DefaultConnection" connectionString="Data Source=myDataSource;User Id=myUserId;Password=myPassword;"/>
//</connectionStrings>
//<appSettings>
// <add key="Landsbanki.Framework.Data.ProviderInvariantName" value="Oracle.ManagedDataAccess.Client"/>
//</appSettings>
var infos = new TestConnectionStringInfoProvider
{
DefaultName = DefaultConnectionName,
Infos = new List<ConnectionStringInfo>
{
new ConnectionStringInfo
{
Name = DefaultConnectionName,
ConnectionString = IntegrationTestConnectionString
}
},
DefaultProviderName = OracleManagedProviderName,
};
var dataEnvironmentProvider = new DataEnvironmentProvider(infos);
var dataEnvironment = dataEnvironmentProvider.GetDefault();
using (var connection = dataEnvironment.ConnectionProvider.OpenConnection())
{
}
}
[TestMethod]
public void ShouldUseSpecificProviderManaged()
{
var dataEnvironment = DataEnvironmentProvider.GetByConnectionSetting(OracleManagedProviderName, IntegrationTestConnectionString);
using (var connection = dataEnvironment.ConnectionProvider.OpenConnection())
{
Assert.AreEqual(typeof(global::Oracle.ManagedDataAccess.Client.OracleConnection), connection.GetType());
}
}
[TestMethod]
public void ShouldUseSpecificProviderNative()
{
var dataEnvironment = DataEnvironmentProvider.GetByConnectionSetting(OracleNativeProviderName, IntegrationTestConnectionString);
using (var connection = dataEnvironment.ConnectionProvider.OpenConnection())
{
Assert.AreEqual(typeof(global::Oracle.DataAccess.Client.OracleConnection), connection.GetType());
}
}
[TestMethod]
public void ShouldFindConnectionStringByName()
{
var infos = new TestConnectionStringInfoProvider
{
Infos = new List<ConnectionStringInfo>
{
new ConnectionStringInfo
{
Name = OtherConnectionName,
ProviderName = OracleNativeProviderName,
ConnectionString = IntegrationTestConnectionString
}
}
};
var dataEnvironmentProvider = new DataEnvironmentProvider(infos);
var dataEnvironment = dataEnvironmentProvider.GetByConnectionStringName(OtherConnectionName);
using (var connection = dataEnvironment.ConnectionProvider.OpenConnection())
{
Assert.AreEqual(typeof(global::Oracle.DataAccess.Client.OracleConnection), connection.GetType());
Assert.AreEqual(IntegrationTestConnectionStringNoPass, connection.ConnectionString);
}
}
[TestMethod]
public void ShouldReadConfigFromConfigFile()
{
var provider = new ConfigConnectionStringInfoProvider();
Assert.AreEqual("TestConnection", provider.DefaultName);
Assert.AreEqual("TestProviderInvariantName", provider.DefaultProviderName);
var csi = provider.ConnectionStringInfos.First(c => c.Name == "TestConnection");
Assert.AreEqual("TestConnection", csi.Name);
Assert.AreEqual("ConnnectionTestProvider", csi.ProviderName);
Assert.AreEqual("Data Source=myDataSource;User Id=myUserId;Password=myPassword;", csi.ConnectionString);
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\MSTest.TestAdapter.1.1.11\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.1.1.11\build\net45\MSTest.TestAdapter.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{2BD6362B-5758-4A0F-947F-7E7BDED78646}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Landsbanki.Framework.Data.Test</RootNamespace>
<AssemblyName>Landsbanki.Framework.Data.Test</AssemblyName>
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">15.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath>
<IsCodedUITest>False</IsCodedUITest>
<TestProjectType>UnitTest</TestProjectType>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Castle.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<HintPath>..\packages\Castle.Core.4.0.0\lib\net45\Castle.Core.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\MSTest.TestFramework.1.1.11\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\MSTest.TestFramework.1.1.11\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath>
</Reference>
<Reference Include="Moq, Version=4.7.1.0, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
<HintPath>..\packages\Moq.4.7.1\lib\net45\Moq.dll</HintPath>
</Reference>
<Reference Include="Oracle.DataAccess, Version=2.111.7.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64">
<SpecificVersion>False</SpecificVersion>
<HintPath>R:\3rdParty\Oracle\11.1\64\Oracle.DataAccess.dll</HintPath>
</Reference>
<Reference Include="Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=MSIL">
<HintPath>..\packages\Oracle.ManagedDataAccess.12.1.24160719\lib\net40\Oracle.ManagedDataAccess.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Data" />
</ItemGroup>
<ItemGroup>
<Compile Include="MyConnectionStringInfoProvider.cs" />
<Compile Include="TestConnectionStringInfoProvider.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Samples.cs" />
<Compile Include="SamplesWithout.cs" />
<Compile Include="IntegrationTests.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Landsbanki.Framework.Data\Landsbanki.Framework.Data.csproj">
<Project>{a0b29932-36fd-40fe-967f-a27ec7c24bf2}</Project>
<Name>Landsbanki.Framework.Data</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.1.1.11\build\net45\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.1.1.11\build\net45\MSTest.TestAdapter.props'))" />
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.1.1.11\build\net45\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.1.1.11\build\net45\MSTest.TestAdapter.targets'))" />
</Target>
<Import Project="..\packages\MSTest.TestAdapter.1.1.11\build\net45\MSTest.TestAdapter.targets" Condition="Exists('..\packages\MSTest.TestAdapter.1.1.11\build\net45\MSTest.TestAdapter.targets')" />
</Project>
\ No newline at end of file
using System;
using System.Collections.Generic;
namespace Landsbanki.Framework.Data.Test
{
internal class MyConnectionStringInfoProvider : IConnectionStringInfoProvider
{
public string DefaultName => throw new NotImplementedException();
public IEnumerable<ConnectionStringInfo> ConnectionStringInfos => throw new NotImplementedException();
public string DefaultProviderName => throw new NotImplementedException();
}
}
\ No newline at end of file
using System.Reflection;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("Landsbanki.Framework.Data.Test")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Landsbankinn")]
[assembly: AssemblyProduct("Landsbanki.Framework.Data.Test")]
[assembly: AssemblyCopyright("Copyright © Landsbankinn 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("2bd6362b-5758-4a0f-947f-7e7bded78646")]
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
namespace Landsbanki.Framework.Data.Test
{
class Samples
{
private void UseDefaultsFromConfig()
{
var dataEnvironment = DataEnvironmentProvider.Default.GetDefault();
using (var connection = dataEnvironment.ConnectionProvider.OpenConnection())
{
// ...
}
// The code above needs at minimum the following configuration:
//<connectionStrings>
// <add name="DefaultConnection" providerName="Oracle.ManagedDataAccess.Client" connectionString="Data Source=myDataSource;User Id=myUserId;Password=myPassword;"/>
//</connectionStrings>
//
// Will also work with this configuration:
//<connectionStrings>
// <add name="DefaultConnection" connectionString="Data Source=myDataSource;User Id=myUserId;Password=myPassword;"/>
//</connectionStrings>
//<appSettings>
// <add key="Landsbanki.Framework.Data.ProviderInvariantName" value="Oracle.ManagedDataAccess.Client"/>
//</appSettings>
}
private void UseConnectionStringNameFromConfig()
{
var dataEnvironment = DataEnvironmentProvider.Default.GetByConnectionStringName("OtherConnection");
using (var connection = dataEnvironment.ConnectionProvider.OpenConnection())
{
// ...
}
// The code above needs at minimum the following configuration:
//<connectionStrings>
// <add name="OtherConnection" providerName="Oracle.ManagedDataAccess.Client" connectionString="Data Source=myDataSource;User Id=myUserId;Password=myPassword;"/>
//</connectionStrings>
}
private void UseADefaultProvider()
{
var dataEnvironment = DataEnvironmentProvider.Default.GetByConnectionStringName("OtherConnection");
using (var connection = dataEnvironment.ConnectionProvider.OpenConnection())
{
// ...
}
// The code above needs at minimum the following configuration:
//<connectionStrings>
// <add name="DefaultConnection" connectionString="Data Source=myDataSource;User Id=myUserId;Password=myPassword;"/>
// <add name="OtherConnection" connectionString="Data Source=myDataSource2;User Id=myUserId;Password=myPassword;"/>
//</connectionStrings>
//<appSettings>
// <add key="Landsbanki.Framework.Data.ProviderInvariantName" value="Oracle.ManagedDataAccess.Client"/>
//</appSettings>
}
private void FromConfigProviderSpecifiedInCode()
{
var dataEnvironment = DataEnvironmentProvider.GetByConnectionSetting("Oracle.ManagedDataAccess.Client", "Data Source=myDataSource;User Id=myUserId;Password=myPassword;");
using (var connection = dataEnvironment.ConnectionProvider.OpenConnection())
{
// ...
}
// The code above needs no configuration.
}
private void Manual()
{
IConnectionStringInfoProvider infoProvider = new MyConnectionStringInfoProvider();
var dataConfiguration = new DataEnvironmentProvider(infoProvider);
var dataEnvironment = dataConfiguration.GetDefault();
using (var connection = dataEnvironment.ConnectionProvider.OpenConnection())
{
// ...
}
// The code above needs no configuration.
}
}
}
using System.Configuration;
using System.Data.Common;
namespace Landsbanki.Framework.Data.Test
{
class SamplesWithout
{
private const string DefaultProviderName = "Oracle.ManagedDataAccess.Client";
private void FromConfig()
{
var connectionStringName = ConfigurationManager.AppSettings["DatabaseConnection"];
if (connectionStringName == null)
{
connectionStringName = "DefaultConnection";
}
var connectionStringSettings = ConfigurationManager.ConnectionStrings[connectionStringName];
if (connectionStringSettings == null)
{
throw new ConfigurationErrorsException($"Connection string name '{connectionStringName}' not found.");
}
var providerName = connectionStringSettings.ProviderName ?? DefaultProviderName;
var dbProviderFactory = DbProviderFactories.GetFactory(providerName);
using (var connection = dbProviderFactory.CreateConnection())
{
connection.ConnectionString = connectionStringSettings.ConnectionString;
// ...
}
// The code above needs at minimum the following configuration:
//<connectionStrings>
// <add name="DefaultConnection" connectionString="Data Source=myDataSource;User Id=myUserId;Password=myPassword;"/>
//</connectionStrings>
//
// Will also work with this configuration:
//<connectionStrings>
// <add name="DefaultConnection" connectionString="Data Source=myDataSource;User Id=myUserId;Password=myPassword;"/>
// <add name="MyOtherConnection" providerName="Oracle.DataAccess.Client" connectionString="Data Source=myDataOtherSource;User Id=myUserId;Password=myPassword;"/>
//</connectionStrings>
//<appSettings>
// <add key="DatabaseConnection" value="MyOtherConnection"/>
//</appSettings>
}
}
}
using System.Collections.Generic;
namespace Landsbanki.Framework.Data.Test
{
public class TestConnectionStringInfoProvider : IConnectionStringInfoProvider
{
public string DefaultName { get; set; }
public IEnumerable<ConnectionStringInfo> ConnectionStringInfos => Infos;
public string DefaultProviderName { get; set; }
public List<ConnectionStringInfo> Infos { get; set; } = new List<ConnectionStringInfo>();
}
}
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Castle.Core" version="4.0.0" targetFramework="net452" />
<package id="Moq" version="4.7.1" targetFramework="net452" />
<package id="MSTest.TestAdapter" version="1.1.11" targetFramework="net452" />
<package id="MSTest.TestFramework" version="1.1.11" targetFramework="net452" />
<package id="Oracle.ManagedDataAccess" version="12.1.24160719" targetFramework="net452" />
</packages>
\ No newline at end of file
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings xdt:Transform="InsertIfMissing">
<add name="DefaultConnection" connectionString="Data Source=myDataSource;User Id=myUserId;Password=myPassword;"
xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)" />
</connectionStrings>
<appSettings xdt:Transform="InsertIfMissing">
<add key="Landsbanki.Framework.Data.DatabaseConnection" value="DefaultConnection"
xdt:Transform="InsertIfMissing" xdt:Locator="Match(key)" />
<add key="Landsbanki.Framework.Data.ProviderInvariantName" value="Oracle.ManagedDataAccess.Client"
xdt:Transform="InsertIfMissing" xdt:Locator="Match(key)" />
</appSettings>
</configuration>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="LandsbankiMinimal" Description="Based on the Microsoft security rules and the Microsoft Managed Minimum Rules." ToolsVersion="15.0">
<Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
<Rule Id="CA1001" Action="Warning" />
<Rule Id="CA1821" Action="Warning" />
<Rule Id="CA2100" Action="Warning" />
<Rule Id="CA2102" Action="Warning" />
<Rule Id="CA2104" Action="Warning" />
<Rule Id="CA2105" Action="Warning" />
<Rule Id="CA2106" Action="Warning" />
<Rule Id="CA2107" Action="Warning" />
<Rule Id="CA2108" Action="Warning" />
<Rule Id="CA2109" Action="Warning" />
<Rule Id="CA2111" Action="Warning" />
<Rule Id="CA2112" Action="Warning" />
<Rule Id="CA2114" Action="Warning" />
<Rule Id="CA2115" Action="Warning" />
<Rule Id="CA2116" Action="Warning" />
<Rule Id="CA2117" Action="Warning" />
<Rule Id="CA2118" Action="Warning" />
<Rule Id="CA2119" Action="Warning" />
<Rule Id="CA2120" Action="Warning" />
<Rule Id="CA2121" Action="Warning" />
<Rule Id="CA2122" Action="Warning" />
<Rule Id="CA2123" Action="Warning" />
<Rule Id="CA2124" Action="Warning" />
<Rule Id="CA2126" Action="Warning" />
<Rule Id="CA2130" Action="Warning" />
<Rule Id="CA2131" Action="Warning" />
<Rule Id="CA2132" Action="Warning" />
<Rule Id="CA2133" Action="Warning" />
<Rule Id="CA2134" Action="Warning" />
<Rule Id="CA2135" Action="Warning" />
<Rule Id="CA2136" Action="Warning" />
<Rule Id="CA2137" Action="Warning" />
<Rule Id="CA2138" Action="Warning" />
<Rule Id="CA2139" Action="Warning" />
<Rule Id="CA2140" Action="Warning" />
<Rule Id="CA2141" Action="Warning" />
<Rule Id="CA2142" Action="Warning" />
<Rule Id="CA2143" Action="Warning" />
<Rule Id="CA2144" Action="Warning" />
<Rule Id="CA2145" Action="Warning" />
<Rule Id="CA2146" Action="Warning" />
<Rule Id="CA2147" Action="Warning" />
<Rule Id="CA2149" Action="Warning" />
<Rule Id="CA2213" Action="Warning" />
<Rule Id="CA2231" Action="Warning" />
</Rules>
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers">
<Rule Id="SA1002" Action="None" />
<Rule Id="SA1005" Action="None" />
<Rule Id="SA1025" Action="None" />
<Rule Id="SA1027" Action="None" />
<Rule Id="SA1028" Action="None" />
<Rule Id="SA1101" Action="None" />
<Rule Id="SA1117" Action="None" />
<Rule Id="SA1119" Action="None" />
<Rule Id="SA1120" Action="None" />
<Rule Id="SA1121" Action="None" />
<Rule Id="SA1122" Action="None" />
<Rule Id="SA1200" Action="None" />
<Rule Id="SA1201" Action="None" />
<Rule Id="SA1202" Action="None" />
<Rule Id="SA1203" Action="None" />
<Rule Id="SA1204" Action="None" />
<Rule Id="SA1205" Action="None" />
<Rule Id="SA1207" Action="None" />
<Rule Id="SA1208" Action="None" />
<Rule Id="SA1209" Action="None" />
<Rule Id="SA1210" Action="None" />
<Rule Id="SA1211" Action="None" />
<Rule Id="SA1212" Action="None" />
<Rule Id="SA1213" Action="None" />
<Rule Id="SA1214" Action="None" />
<Rule Id="SA1216" Action="None" />
<Rule Id="SA1217" Action="None" />
<Rule Id="SA1305" Action="Warning" />
<Rule Id="SA1311" Action="None" />
<Rule Id="SA1400" Action="None" />
<Rule Id="SA1402" Action="None" />
<Rule Id="SA1404" Action="None" />
<Rule Id="SA1507" Action="None" />
<Rule Id="SA1508" Action="None" />