From abf751b52159976c9552c758923cf94060adb307 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Neum=C3=BCller?= <c.neumueller@gmail.com> Date: Fri, 30 Oct 2020 22:08:18 +0100 Subject: [PATCH 1/2] latest and greatest --- conf/appsettings.json.template | 2 +- src/SuperDump.sln | 7 +-- .../Services/SlackNotificationService.cs | 10 ++--- src/SuperDumpService/SuperDumpService.csproj | 45 +++++++++---------- src/SuperDumpService/web.config | 37 +++++++-------- 5 files changed, 51 insertions(+), 50 deletions(-) diff --git a/conf/appsettings.json.template b/conf/appsettings.json.template index 6e41be9..3b3e661 100644 --- a/conf/appsettings.json.template +++ b/conf/appsettings.json.template @@ -130,7 +130,7 @@ "DownloadServiceRetry": "5", // Number of retries when trying to download a dump file from an URL "DownloadServiceRetryTimeout": "500", //Time between download retries in milliseconds "DownloadServiceHttpClientTimeout": "00:04:00", - "UseAmazonSqs": "true", + "UseAmazonSqs": "false", "AmazonSqsSettings": { "SuperDumpBaseUrl": "", // Url that is used for generating the response messages "PollCron": "*/30 * * * *", //Hangfire cron expression which describes the schedule for polling the Aws Queue diff --git a/src/SuperDump.sln b/src/SuperDump.sln index 0eba7d1..a5a0d35 100644 --- a/src/SuperDump.sln +++ b/src/SuperDump.sln @@ -1,7 +1,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26430.13 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30615.102 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "conf", "conf", "{F1C07791-3C2A-400E-8505-87F0AA3D21EC}" ProjectSection(SolutionItems) = preProject @@ -45,7 +45,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SuperDumpService.Test.Fakes EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution - SuperDump.Analyzer.Common\SuperDump.Analyzer.Common.projitems*{0dd4da67-4e55-4ee1-9030-5a69d8cdc6b4}*SharedItemsImports = 4 + SuperDump.Analyzer.Common\SuperDump.Analyzer.Common.projitems*{0dd4da67-4e55-4ee1-9030-5a69d8cdc6b4}*SharedItemsImports = 5 + SuperDump.Analyzer.Common\SuperDump.Analyzer.Common.projitems*{2630fb6a-4a60-4330-895f-7665045fed6f}*SharedItemsImports = 5 SuperDump.Analyzer.Common\SuperDump.Analyzer.Common.projitems*{ea333d99-767a-472b-a272-b44c659023c0}*SharedItemsImports = 13 EndGlobalSection GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/src/SuperDumpService/Services/SlackNotificationService.cs b/src/SuperDumpService/Services/SlackNotificationService.cs index 333041a..7892401 100644 --- a/src/SuperDumpService/Services/SlackNotificationService.cs +++ b/src/SuperDumpService/Services/SlackNotificationService.cs @@ -41,11 +41,11 @@ public async Task NotifyDumpAnalysisFinished(DumpMetainfo dumpInfo) { } public async Task<string> GetMessage(DumpMetainfo dumpInfo) { - //var engine = new RazorLightEngineBuilder() - //.UseEmbeddedResourcesProject(typeof(SlackMessageViewModel)) - //.UseMemoryCachingProvider() - //.Build(); - var engine = new EngineFactory().ForEmbeddedResources(typeof(SlackMessageViewModel)); + var engine = new RazorLightEngineBuilder() + .UseEmbeddedResourcesProject(typeof(SlackMessageViewModel)) + .UseMemoryCachingProvider() + .Build(); + //var engine = new EngineFactory().ForEmbeddedResources(typeof(SlackMessageViewModel)); return await engine.CompileRenderAsync("SlackMessage", await GetMessageModel(dumpInfo)); } diff --git a/src/SuperDumpService/SuperDumpService.csproj b/src/SuperDumpService/SuperDumpService.csproj index 9e2aa33..472ada0 100644 --- a/src/SuperDumpService/SuperDumpService.csproj +++ b/src/SuperDumpService/SuperDumpService.csproj @@ -11,7 +11,6 @@ <RestorePackages>true</RestorePackages> <MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish> <!-- needed for RazorLight. see https://github.com/toddams/RazorLight/issues/118 --> <UserSecretsId>B58C48DC-CC1B-4647-8E53-36B41078F1B8</UserSecretsId> - <LangVersion>7.2</LangVersion> </PropertyGroup> <ItemGroup> <Content Remove="Views\SlackMessage.cshtml" /> @@ -23,38 +22,38 @@ </Content> </ItemGroup> <ItemGroup> - <PackageReference Include="AWSSDK.Core" Version="3.3.103.71" /> - <PackageReference Include="AWSSDK.SQS" Version="3.3.102.38" /> - <PackageReference Include="Dynatrace.OneAgent.Sdk" Version="1.6.0" /> - <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.0.0" /> - <PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="3.0.0" /> - <PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="3.0.0" /><!-- required since the update to .net core 3.0 because of a missing dependency --> - <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="3.0.0" /> + <PackageReference Include="AWSSDK.Core" Version="3.5.1.32" /> + <PackageReference Include="AWSSDK.SQS" Version="3.5.0.34" /> + <PackageReference Include="Dynatrace.OneAgent.Sdk" Version="1.7.0" /> + <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.0-rc.2.20475.17" /> + <PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="5.0.0-rc.2.20475.17" /> + <PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="5.0.0-rc.2.20475.5" /><!-- required since the update to .net core 3.0 because of a missing dependency --> + <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="5.0.0-rc.2.20478.4" /> <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.2.0" /> - <PackageReference Include="ByteSize" Version="2.0.0-beta1" /> - <PackageReference Include="Hangfire" Version="1.7.6" /> - <PackageReference Include="Hangfire.AspNetCore" Version="1.7.6" /> + <PackageReference Include="ByteSize" Version="2.0.0" /> + <PackageReference Include="Hangfire" Version="1.7.17" /> + <PackageReference Include="Hangfire.AspNetCore" Version="1.7.17" /> <PackageReference Include="Hangfire.MemoryStorage.Core" Version="1.4.0" /> - <PackageReference Include="Humanizer" Version="2.7.2" /> + <PackageReference Include="Humanizer" Version="2.8.26" /> <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink.Loader" Version="14.1.0" /> <!--<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.0" /> ___ what do we need this for? it has a version clash with BenchmarkDotnet. can we remove it? --> - <PackageReference Include="NEST" Version="7.3.0" /> - <PackageReference Include="RazorLight" Version="2.0.0-beta1" /> - <PackageReference Include="Serilog" Version="2.9.0-dev-01091" /> - <PackageReference Include="Serilog.Extensions.Logging" Version="3.0.0-dev-10240" /> - <PackageReference Include="Serilog.Extensions.Logging.File" Version="2.0.0-dev-00032" /> - <PackageReference Include="SharpZipLib" Version="1.2.0" /> + <PackageReference Include="NEST" Version="7.9.0" /> + <PackageReference Include="RazorLight" Version="2.0.0-beta9" /> + <PackageReference Include="Serilog" Version="2.10.1-dev-01249" /> + <PackageReference Include="Serilog.Extensions.Logging" Version="3.0.2-dev-10281" /> + <PackageReference Include="Serilog.Extensions.Logging.File" Version="2.0.0" /> + <PackageReference Include="SharpZipLib" Version="1.3.0" /> <PackageReference Include="Slack.Webhooks.Core" Version="1.0.1" /> - <PackageReference Include="Swashbuckle.AspNetCore" Version="5.0.0-rc3" /> - <PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="5.0.0-rc3" /> - <PackageReference Include="System.DirectoryServices.AccountManagement" Version="4.6.0" /> + <PackageReference Include="Swashbuckle.AspNetCore" Version="5.6.3" /> + <PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="5.6.3" /> + <PackageReference Include="System.DirectoryServices.AccountManagement" Version="5.0.0-rc.2.20475.5" /> <PackageReference Include="System.IO.Compression.ZipFile" Version="4.3.0" /> <PackageReference Include="System.Net.Http" Version="4.3.4" /> <PackageReference Include="System.Net.Http.Formatting.Extension" Version="5.2.3" /> <PackageReference Include="System.Runtime.Serialization.Primitives" Version="4.3.0" /> <!-- needed to reference this directly because of a "package downgrade problem" introduced by "Slack.Webhooks.Core" --> <PackageReference Include="WebSocketManager" Version="1.0.1" /> - <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.0.0" /> - <PackageReference Include="X.PagedList.Mvc.Core" Version="7.9.1" /> + <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.0-rc.2.20475.17" /> + <PackageReference Include="X.PagedList.Mvc.Core" Version="8.0.7" /> </ItemGroup> <Target Name="PrepublishScript" BeforeTargets="PrepareForPublish"> <Exec Command="bower install" /> diff --git a/src/SuperDumpService/web.config b/src/SuperDumpService/web.config index 98ad5ee..9f10387 100644 --- a/src/SuperDumpService/web.config +++ b/src/SuperDumpService/web.config @@ -1,23 +1,24 @@ <?xml version="1.0" encoding="utf-8"?> <configuration> - <!-- + <!-- Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380 --> - <system.webServer> - <handlers> - <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> - </handlers> - <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="true" stdoutLogFile="..\..\logs\stdout" forwardWindowsAuthToken="false"> - <environmentVariables> - <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" /> - <environmentVariable name="ASPNETCORE_HTTPS_PORT" value="44379" /> - </environmentVariables> - </aspNetCore> - <security> - <requestFiltering> - <!-- set max allowed request content length to 4GB - 1byte (IIS does not allow a value >= 4GB) --> - <requestLimits maxAllowedContentLength="4294967295" /> - </requestFiltering> - </security> - </system.webServer> + <system.webServer> + <handlers> + <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> + </handlers> + <aspNetCore processPath="%LAUNCHER_PATH%" stdoutLogEnabled="true" stdoutLogFile="..\..\logs\stdout" forwardWindowsAuthToken="false" hostingModel="InProcess"> + <environmentVariables> + <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" /> + <environmentVariable name="ASPNETCORE_HTTPS_PORT" value="44379" /> + <environmentVariable name="COMPLUS_ForceENC" value="1" /> + </environmentVariables> + </aspNetCore> + <security> + <requestFiltering> + <!-- set max allowed request content length to 4GB - 1byte (IIS does not allow a value >= 4GB) --> + <requestLimits maxAllowedContentLength="4294967295" /> + </requestFiltering> + </security> + </system.webServer> </configuration> \ No newline at end of file From e6fe0a9e10e426288eda9aeb7c91b9a3e7bb4a47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Neum=C3=BCller?= <c.neumueller@gmail.com> Date: Fri, 30 Oct 2020 23:12:24 +0100 Subject: [PATCH 2/2] more latest and greatest --- .../SuperDump.DebugDiag.csproj | 4 +-- src/SuperDump/SuperDump.csproj | 30 +++++++++---------- src/SuperDumpModels/SuperDumpModels.csproj | 2 +- .../SuperDumpSelector.csproj | 6 ++-- .../SuperDumpService.Benchmark.csproj | 3 +- .../SuperDumpService.Test.csproj | 4 +-- src/SuperDumpTests/SuperDumpTests.csproj | 8 ++--- 7 files changed, 28 insertions(+), 29 deletions(-) diff --git a/src/SuperDump.DebugDiag/SuperDump.DebugDiag.csproj b/src/SuperDump.DebugDiag/SuperDump.DebugDiag.csproj index 9e6f4cc..69efdac 100644 --- a/src/SuperDump.DebugDiag/SuperDump.DebugDiag.csproj +++ b/src/SuperDump.DebugDiag/SuperDump.DebugDiag.csproj @@ -17,7 +17,7 @@ </Reference> </ItemGroup> <ItemGroup> - <PackageReference Include="CommandLineParser" Version="2.5.0" /> - <PackageReference Include="Dynatrace.OneAgent.Sdk" Version="1.4.0" /> + <PackageReference Include="CommandLineParser" Version="2.8.0" /> + <PackageReference Include="Dynatrace.OneAgent.Sdk" Version="1.7.0" /> </ItemGroup> </Project> \ No newline at end of file diff --git a/src/SuperDump/SuperDump.csproj b/src/SuperDump/SuperDump.csproj index 510a54e..105f3c0 100644 --- a/src/SuperDump/SuperDump.csproj +++ b/src/SuperDump/SuperDump.csproj @@ -1,9 +1,9 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> - <TargetFramework>net48</TargetFramework> + <TargetFramework>net5.0</TargetFramework> <AllowUnsafeBlocks>true</AllowUnsafeBlocks> - <RuntimeIdentifier>win-x86 or win-x64</RuntimeIdentifier> + <RuntimeIdentifiers>win-x86;win-x64</RuntimeIdentifiers> <OutputPath>bin\$(Platform)</OutputPath> <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath> @@ -48,20 +48,20 @@ <ProjectReference Include="..\SuperDumpModels\SuperDumpModels.csproj" /> </ItemGroup> <ItemGroup> - <PackageReference Include="ByteSize" Version="1.3.0" /> - <PackageReference Include="CommandLineParser" Version="2.5.0" /> - <PackageReference Include="Dynatrace.OneAgent.Sdk" Version="1.4.0" /> - <PackageReference Include="LargeAddressAware" Version="1.0.3" /> - <PackageReference Include="Microsoft.Diagnostics.Runtime" Version="1.0.3" /> - <PackageReference Include="Microsoft.NETCore.Platforms" Version="2.2.0-preview2-26905-02" /> - <PackageReference Include="morelinq" Version="3.0.0" /> + <PackageReference Include="ByteSize" Version="2.0.0" /> + <PackageReference Include="CommandLineParser" Version="2.8.0" /> + <PackageReference Include="Dynatrace.OneAgent.Sdk" Version="1.7.0" /> + <PackageReference Include="LargeAddressAware" Version="1.0.5" /> + <PackageReference Include="Microsoft.Diagnostics.Runtime" Version="1.1.142101" /> + <PackageReference Include="Microsoft.NETCore.Platforms" Version="5.0.0-rc.2.20475.5" /> + <PackageReference Include="morelinq" Version="3.3.2" /> <PackageReference Include="NETStandard.Library" Version="2.0.3" /> - <PackageReference Include="Newtonsoft.Json" Version="11.0.2" /> + <PackageReference Include="Newtonsoft.Json" Version="12.0.3" /> <PackageReference Include="System.Collections" Version="4.3.0" /> <PackageReference Include="System.Collections.Concurrent" Version="4.3.0" /> <PackageReference Include="System.Console" Version="4.3.1" /> <PackageReference Include="System.Diagnostics.Debug" Version="4.3.0" /> - <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="4.5.1" /> + <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="5.0.0-rc.2.20475.5" /> <PackageReference Include="System.Diagnostics.Tools" Version="4.3.0" /> <PackageReference Include="System.Diagnostics.Tracing" Version="4.3.0" /> <PackageReference Include="System.Globalization" Version="4.3.0" /> @@ -69,14 +69,14 @@ <PackageReference Include="System.Linq" Version="4.3.0" /> <PackageReference Include="System.Linq.Expressions" Version="4.3.0" /> <PackageReference Include="System.Net.Http" Version="4.3.4" /> - <PackageReference Include="System.Net.Primitives" Version="4.3.0" /> + <PackageReference Include="System.Net.Primitives" Version="4.3.1" /> <PackageReference Include="System.ObjectModel" Version="4.3.0" /> <PackageReference Include="System.Reflection" Version="4.3.0" /> <PackageReference Include="System.Reflection.Extensions" Version="4.3.0" /> <PackageReference Include="System.Reflection.Primitives" Version="4.3.0" /> <PackageReference Include="System.Resources.ResourceManager" Version="4.3.0" /> - <PackageReference Include="System.Runtime" Version="4.3.0" /> - <PackageReference Include="System.Runtime.Extensions" Version="4.3.0" /> + <PackageReference Include="System.Runtime" Version="4.3.1" /> + <PackageReference Include="System.Runtime.Extensions" Version="4.3.1" /> <PackageReference Include="System.Runtime.Handles" Version="4.3.0" /> <PackageReference Include="System.Runtime.InteropServices" Version="4.3.0" /> <PackageReference Include="System.Runtime.Numerics" Version="4.3.0" /> @@ -84,7 +84,7 @@ <PackageReference Include="System.Security.Cryptography.X509Certificates" Version="4.3.2" /> <PackageReference Include="System.Text.Encoding" Version="4.3.0" /> <PackageReference Include="System.Text.Encoding.Extensions" Version="4.3.0" /> - <PackageReference Include="System.Text.RegularExpressions" Version="4.3.0" /> + <PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" /> <PackageReference Include="System.Threading" Version="4.3.0" /> <PackageReference Include="System.Threading.Tasks" Version="4.3.0" /> <PackageReference Include="System.Threading.Timer" Version="4.3.0" /> diff --git a/src/SuperDumpModels/SuperDumpModels.csproj b/src/SuperDumpModels/SuperDumpModels.csproj index fee616e..0020df8 100644 --- a/src/SuperDumpModels/SuperDumpModels.csproj +++ b/src/SuperDumpModels/SuperDumpModels.csproj @@ -11,6 +11,6 @@ </PropertyGroup> <ItemGroup> - <PackageReference Include="Newtonsoft.Json" Version="11.0.2" /> + <PackageReference Include="Newtonsoft.Json" Version="12.0.3" /> </ItemGroup> </Project> \ No newline at end of file diff --git a/src/SuperDumpSelector/SuperDumpSelector.csproj b/src/SuperDumpSelector/SuperDumpSelector.csproj index 69b21fe..f0280fe 100644 --- a/src/SuperDumpSelector/SuperDumpSelector.csproj +++ b/src/SuperDumpSelector/SuperDumpSelector.csproj @@ -19,9 +19,9 @@ <ProjectReference Include="..\SuperDump.Common\SuperDump.Common.csproj" /> </ItemGroup> <ItemGroup> - <PackageReference Include="CommandLineParser" Version="2.5.0" /> - <PackageReference Include="Dynatrace.OneAgent.Sdk" Version="1.4.0" /> - <PackageReference Include="Microsoft.Diagnostics.Runtime" Version="1.0.5" /> + <PackageReference Include="CommandLineParser" Version="2.8.0" /> + <PackageReference Include="Dynatrace.OneAgent.Sdk" Version="1.7.0" /> + <PackageReference Include="Microsoft.Diagnostics.Runtime" Version="1.1.142101" /> <PackageReference Include="System.Console" Version="4.3.1" /> <PackageReference Include="System.Diagnostics.Process" Version="4.3.0" /> <PackageReference Include="System.IO.FileSystem" Version="4.3.0" /> diff --git a/src/SuperDumpService.Benchmark/SuperDumpService.Benchmark.csproj b/src/SuperDumpService.Benchmark/SuperDumpService.Benchmark.csproj index a8448d1..afe6470 100644 --- a/src/SuperDumpService.Benchmark/SuperDumpService.Benchmark.csproj +++ b/src/SuperDumpService.Benchmark/SuperDumpService.Benchmark.csproj @@ -3,11 +3,10 @@ <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net5.0</TargetFramework> - <LangVersion>7.2</LangVersion> </PropertyGroup> <ItemGroup> - <PackageReference Include="BenchmarkDotNet" Version="0.11.5" /> + <PackageReference Include="BenchmarkDotNet" Version="0.12.1" /> </ItemGroup> <ItemGroup> diff --git a/src/SuperDumpService.Test/SuperDumpService.Test.csproj b/src/SuperDumpService.Test/SuperDumpService.Test.csproj index 5aa601a..5637a1a 100644 --- a/src/SuperDumpService.Test/SuperDumpService.Test.csproj +++ b/src/SuperDumpService.Test/SuperDumpService.Test.csproj @@ -8,9 +8,9 @@ </PropertyGroup> <ItemGroup> - <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.3.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" /> <PackageReference Include="xunit" Version="2.4.1" /> - <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"> + <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference> diff --git a/src/SuperDumpTests/SuperDumpTests.csproj b/src/SuperDumpTests/SuperDumpTests.csproj index 1f19b46..29e96f5 100644 --- a/src/SuperDumpTests/SuperDumpTests.csproj +++ b/src/SuperDumpTests/SuperDumpTests.csproj @@ -1,6 +1,6 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> - <TargetFramework>net48</TargetFramework> + <TargetFramework>net5.0</TargetFramework> <AssemblyName>SuperDumpTests</AssemblyName> <OutputPath>bin\$(Configuration)</OutputPath> <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> @@ -18,8 +18,8 @@ <ProjectReference Include="..\SuperDump\SuperDump.csproj" /> </ItemGroup> <ItemGroup> - <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" /> - <PackageReference Include="MSTest.TestAdapter" Version="1.3.2" /> - <PackageReference Include="MSTest.TestFramework" Version="1.3.2" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" /> + <PackageReference Include="MSTest.TestAdapter" Version="2.1.2" /> + <PackageReference Include="MSTest.TestFramework" Version="2.1.2" /> </ItemGroup> </Project> \ No newline at end of file