Skip to content

Commit

Permalink
Convert to CompressedStaticFiles.AspNet (#15)
Browse files Browse the repository at this point in the history
* AspNetCore -> AspNet

* Update NuGet packages

* Change authors & readme

* Adjust namespace from CompresedStaticFiles to CompresedStaticFiles.AspNet

* Removed extraneous "\" in SDKRoot (in csproj with compression)

* Simplify example csproj
  • Loading branch information
MarkStega authored Oct 26, 2022
1 parent 43a0db4 commit 64cd46b
Show file tree
Hide file tree
Showing 40 changed files with 56 additions and 68 deletions.
10 changes: 5 additions & 5 deletions .github/workflows/GithubActionsRelease.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ env:
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
outputCSFB: ${{github.workspace}}\siteCSFB
projectCSFB: 'CompressedStaticFiles.AspNetCore/CompressedStaticFiles.AspNetCore.csproj'
projectTest: 'CompressedStaticFiles.AspNetCore.Test/CompressedStaticFiles.AspNetCore.Test.csproj'
projectCSFB: 'CompressedStaticFiles.AspNet/CompressedStaticFiles.AspNet.csproj'
projectTest: 'CompressedStaticFiles.AspNet.Test/CompressedStaticFiles.AspNet.Test.csproj'

jobs:

Expand All @@ -30,15 +30,15 @@ jobs:
is-on-fork:
name: Running on a fork?
runs-on: ubuntu-latest
if: github.repository != 'Material-Blazor/CompressedStaticFiles.AspNetCore'
if: github.repository != 'Material-Blazor/CompressedStaticFiles.AspNet'
steps:
- name: Nothing to see here
run: echo ""

is-on-material-blazor:
name: Running on Material-Blazor/CompressedStaticFiles.AspNetCore?
name: Running on Material-Blazor/CompressedStaticFiles.AspNet?
runs-on: ubuntu-latest
if: github.repository == 'Material-Blazor/CompressedStaticFiles.AspNetCore'
if: github.repository == 'Material-Blazor/CompressedStaticFiles.AspNet'
steps:
- name: Nothing to see here
run: echo ""
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/GithubActionsWIP.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ env:
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
outputCSFB: ${{github.workspace}}/siteCSFB
projectCSFB: 'CompressedStaticFiles.AspNetCore/CompressedStaticFiles.AspNetCore.csproj'
projectTest: 'CompressedStaticFiles.AspNetCore.Test/CompressedStaticFiles.AspNetCore.Test.csproj'
projectCSFB: 'CompressedStaticFiles.AspNet/CompressedStaticFiles.AspNet.csproj'
projectTest: 'CompressedStaticFiles.AspNet.Test/CompressedStaticFiles.AspNet.Test.csproj'

jobs:

Expand All @@ -24,15 +24,15 @@ jobs:
is-on-fork:
name: Running on a fork?
runs-on: ubuntu-latest
if: github.repository != 'Material-Blazor/CompressedStaticFiles.AspNetCore'
if: github.repository != 'Material-Blazor/CompressedStaticFiles.AspNet'
steps:
- name: Nothing to see here
run: echo ""

is-on-material-blazor:
name: Running on Material-Blazor/CompressedStaticFiles.AspNetCore?
name: Running on Material-Blazor/CompressedStaticFiles.AspNet?
runs-on: ubuntu-latest
if: github.repository == 'Material-Blazor/CompressedStaticFiles.AspNetCore'
if: github.repository == 'Material-Blazor/CompressedStaticFiles.AspNet'
steps:
- name: Nothing to see here
run: echo ""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="FluentAssertions" Version="6.7.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.1" />
<PackageReference Include="FluentAssertions" Version="6.8.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2" />
<PackageReference Include="NSubstitute" Version="4.4.0" />
<PackageReference Include="xunit" Version="2.4.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
Expand All @@ -29,7 +29,7 @@
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\CompressedStaticFiles.AspNetCore\CompressedStaticFiles.AspNetCore.csproj" />
<ProjectReference Include="..\CompressedStaticFiles.AspNet\CompressedStaticFiles.AspNet.csproj" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
ReleaseNotes.md = ReleaseNotes.md
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CompressedStaticFiles.AspNetCore.Tests", "CompressedStaticFiles.AspNetCore.Tests\CompressedStaticFiles.AspNetCore.Tests.csproj", "{3D5A45B2-A15B-49B2-BB4F-47FDC1B5A5ED}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CompressedStaticFiles.AspNet.Tests", "CompressedStaticFiles.AspNet.Tests\CompressedStaticFiles.AspNet.Tests.csproj", "{3D5A45B2-A15B-49B2-BB4F-47FDC1B5A5ED}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CompressedStaticFiles.AspNetCore", "CompressedStaticFiles.AspNetCore\CompressedStaticFiles.AspNetCore.csproj", "{0839E928-AD6E-493A-A7C0-311B8C8905E4}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CompressedStaticFiles.AspNet", "CompressedStaticFiles.AspNet\CompressedStaticFiles.AspNet.csproj", "{0839E928-AD6E-493A-A7C0-311B8C8905E4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CompressedStaticFiles.Example", "CompressedStaticFiles.Example\CompressedStaticFiles.Example.csproj", "{07CB7CC2-D52F-4834-BA41-D962113551F5}"
EndProject
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
using Microsoft.Extensions.Logging;
using System.IO;

namespace CompressedStaticFiles;
namespace CompressedStaticFiles.AspNet;


/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
using System.IO;
using System.Linq;

namespace CompressedStaticFiles;
namespace CompressedStaticFiles.AspNet;


/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
using System;
using System.IO;

namespace CompressedStaticFiles;
namespace CompressedStaticFiles.AspNet;


/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
using System.IO;
using System.Linq;

namespace CompressedStaticFiles;
namespace CompressedStaticFiles.AspNet;


/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
using Microsoft.Extensions.Options;
using System;

namespace CompressedStaticFiles;
namespace CompressedStaticFiles.AspNet;


/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
using IHost = Microsoft.AspNetCore.Hosting.IWebHostEnvironment;


namespace CompressedStaticFiles;
namespace CompressedStaticFiles.AspNet;


/// <summary>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using System.Collections.Generic;

namespace CompressedStaticFiles;
namespace CompressedStaticFiles.AspNet;


/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
<PropertyGroup>
<TargetFrameworks>net6.0;</TargetFrameworks>
<Version>1.0.0</Version>
<Authors>Peter Andersson;Andrey Kudashkin;Mathias Raacke,Arian Kadkhoda</Authors>
<Company>Peter Andersson;Andrey Kudashkin;Mathias Raacke,Arian Kadkhoda</Company>
<Authors>Simon Ziegler;Mark Stega;Peter Andersson;Andrey Kudashkin;Mathias Raacke,Arian Kadkhoda</Authors>
<Company>Simon Ziegler;Mark Stega;Peter Andersson;Andrey Kudashkin;Mathias Raacke,Arian Kadkhoda</Company>
<Description>
Send compressed static files to the browser without having to compress on demand, also has support for sending more advanced image formats when the browser indicates that i has support for it.
Files need to be compressed and converted to other image formats before deploying.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
using Microsoft.AspNetCore.StaticFiles;
using Microsoft.Extensions.FileProviders;

namespace CompressedStaticFiles;
namespace CompressedStaticFiles.AspNet;


/// <summary>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.StaticFiles;

namespace CompressedStaticFiles;
namespace CompressedStaticFiles.AspNet;

/// <summary>
/// Information detailing alternative compressed versions of the requested file.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using Microsoft.Extensions.Logging;
using System;

namespace CompressedStaticFiles;
namespace CompressedStaticFiles.AspNet;


/// <summary>
Expand Down
24 changes: 12 additions & 12 deletions CompressedStaticFiles.Example/CompressedStaticFiles.Example.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,12 @@
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\CompressedStaticFiles.AspNetCore\CompressedStaticFiles.AspNetCore.csproj" />
<ProjectReference Include="..\CompressedStaticFiles.AspNet\CompressedStaticFiles.AspNet.csproj" />
</ItemGroup>




<!--All subsequent code contributed by https://github.com/SQL-MisterMagoo-->

<PropertyGroup>
Expand All @@ -25,29 +23,31 @@

<!-- First, we strip the property value back to the root SDKs level and then down into the WebAssembly SDK -->
<_SDKRoot>$(ILLinkTasksAssembly.Substring(0,$(ILLinkTasksAssembly.LastIndexOf('Microsoft.NET.ILLink.Tasks'))))</_SDKRoot>
<BlazorWebAssemblySdkDirectoryRoot>$(_SDKRoot)\Microsoft.NET.Sdk.BlazorWebAssembly\</BlazorWebAssemblySdkDirectoryRoot>
<BlazorWebAssemblySdkDirectoryRoot>$(_SDKRoot)Microsoft.NET.Sdk.BlazorWebAssembly\</BlazorWebAssemblySdkDirectoryRoot>

<!-- The next four lines are Copyright (c) .NET Foundation. All rights reserved. -->
<_BlazorWebAssemblySdkTasksTFM Condition=" '$(MSBuildRuntimeType)' == 'Core'">net6.0</_BlazorWebAssemblySdkTasksTFM>
<_BlazorWebAssemblySdkTasksTFM Condition=" '$(MSBuildRuntimeType)' != 'Core'">net472</_BlazorWebAssemblySdkTasksTFM>
<_BlazorWebAssemblySdkTasksAssembly>$(BlazorWebAssemblySdkDirectoryRoot)tools\$(_BlazorWebAssemblySdkTasksTFM)\Microsoft.NET.Sdk.BlazorWebAssembly.Tasks.dll</_BlazorWebAssemblySdkTasksAssembly>
<_BlazorWebAssemblySdkToolAssembly>$(BlazorWebAssemblySdkDirectoryRoot)tools\net6.0\Microsoft.NET.Sdk.BlazorWebAssembly.Tool.dll</_BlazorWebAssemblySdkToolAssembly>
<_BlazorWebAssemblySdkTasksAssembly>$(BlazorWebAssemblySdkDirectoryRoot)tools\net472\Microsoft.NET.Sdk.BlazorWebAssembly.Tasks.dll</_BlazorWebAssemblySdkTasksAssembly>
<_BlazorWebAssemblySdkToolAssembly>$(BlazorWebAssemblySdkDirectoryRoot)tools\$(TargetFramework)\Microsoft.NET.Sdk.BlazorWebAssembly.Tool.dll</_BlazorWebAssemblySdkToolAssembly>
</PropertyGroup>

<!-- The next two lines are Copyright (c) .NET Foundation. All rights reserved. -->
<UsingTask TaskName="Microsoft.NET.Sdk.BlazorWebAssembly.BrotliCompress" AssemblyFile="$(_BlazorWebAssemblySdkTasksAssembly)" />
<UsingTask TaskName="Microsoft.NET.Sdk.BlazorWebAssembly.GzipCompress" AssemblyFile="$(_BlazorWebAssemblySdkTasksAssembly)" />




<!--
This target runs after build. If you want to run after Publish, change:
- AfterTargets should be set to "Build"
- "ProjectDir" in MyStaticFiles should be changed to "PublishDir"
-->
<Target Name="CustomGZipAndBrotliCompression" AfterTargets="Build">

<Message Importance="High" Text="======= Gzip/Brotli task assembly details=$(_BlazorWebAssemblySdkTasksAssembly)" />
<Message Importance="High" Text="======= Brotli tool assembly details=$(_BlazorWebAssemblySdkToolAssembly)" />
<Message Importance="High" Text="======= Brotli tool executable details=$(_RazorSdkDotNetHostFileName)" />
<Message Importance="High" Text="======= Brotli tool path details=$(_RazorSdkDotNetHostDirectory)" />

<!--************* THIS IS WHERE YOU CHOOSE WHAT TO COMPRESS *****************
you probably don't want to change anything else - just this ItemGroup-->

Expand All @@ -62,7 +62,7 @@
</GZipCompress>

<!--Call the BlazorWebAssembly Task BrotliCompress and store the results in MyCompressedFiles-->
<BrotliCompress OutputDirectory="$(IntermediateOutputPath)compress\" FilesToCompress="@(MyStaticFiles)" ToolAssembly="$(_BlazorWebAssemblySdkToolAssembly)" ToolExe="$(_RazorSdkDotNetHostFileName)" ToolPath="$(_RazorSdkDotNetHostDirectory)">
<BrotliCompress FilesToCompress="@(MyStaticFiles)" OutputDirectory="$(IntermediateOutputPath)compress\" ToolAssembly="$(_BlazorWebAssemblySdkToolAssembly)" ToolExe="$(_RazorSdkDotNetHostFileName)" ToolPath="$(_RazorSdkDotNetHostDirectory)">
<Output TaskParameter="CompressedFiles" ItemName="MyCompressedFiles" />
</BrotliCompress>

Expand All @@ -74,5 +74,5 @@
<Move SourceFiles="%(MyCompressedFiles.FullPath)" DestinationFiles="%(MyCompressedFiles.OriginalItemSpec)%(MyCompressedFiles.Extension)" />

</Target>

</Project>
2 changes: 1 addition & 1 deletion CompressedStaticFiles.Example/Program.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using CompressedStaticFiles.Example.Data;
using CompressedStaticFiles;
using CompressedStaticFiles.AspNet;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.ResponseCompression;
Expand Down
1 change: 1 addition & 0 deletions CompressedStaticFiles.Example/_Imports.razor
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.JSInterop
@using CompressedStaticFiles.AspNet
@using CompressedStaticFiles.Example
@using CompressedStaticFiles.Example.Shared
24 changes: 12 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,24 @@



[![NuGet version](https://img.shields.io/nuget/v/CompressedStaticFiles.AspNetCore?logo=nuget&label=nuget%20version&style=flat-square)](https://www.nuget.org/packages/CompressedStaticFiles.AspNetCore/)
[![NuGet version](https://img.shields.io/nuget/vpre/CompressedStaticFiles.AspNetCore?logo=nuget&label=nuget%20pre-release&style=flat-square)](https://www.nuget.org/packages/CompressedStaticFiles.AspNetCore/)
[![NuGet downloads](https://img.shields.io/nuget/dt/CompressedStaticFiles.AspNetCore?logo=nuget&label=nuget%20downloads&style=flat-square)](https://www.nuget.org/packages/CompressedStaticFiles.AspNetCore/)
[![NuGet version](https://img.shields.io/nuget/v/CompressedStaticFiles.AspNet?logo=nuget&label=nuget%20version&style=flat-square)](https://www.nuget.org/packages/CompressedStaticFiles.AspNet/)
[![NuGet version](https://img.shields.io/nuget/vpre/CompressedStaticFiles.AspNet?logo=nuget&label=nuget%20pre-release&style=flat-square)](https://www.nuget.org/packages/CompressedStaticFiles.AspNet/)
[![NuGet downloads](https://img.shields.io/nuget/dt/CompressedStaticFiles.AspNet?logo=nuget&label=nuget%20downloads&style=flat-square)](https://www.nuget.org/packages/CompressedStaticFiles.AspNet/)


---


[![GitHub license](https://img.shields.io/badge/license-Apache%202-blue.svg)](https://raw.githubusercontent.com/material-blazor/CompressedStaticFiles.AspNetCore/main/LICENSE)
[![GitHub issues](https://img.shields.io/github/issues/Material-Blazor/CompressedStaticFiles.AspNetCore?logo=github&style=flat-square)](https://github.com/Material-Blazor/CompressedStaticFiles.AspNetCore/issues)
[![GitHub forks](https://img.shields.io/github/forks/Material-Blazor/CompressedStaticFiles.AspNetCore?logo=github&style=flat-square)](https://github.com/Material-Blazor/CompressedStaticFiles.AspNetCore/network/members)
[![GitHub stars](https://img.shields.io/github/stars/Material-Blazor/CompressedStaticFiles.AspNetCore?logo=github&style=flat-square)](https://github.com/Material-Blazor/CompressedStaticFiles.AspNetCore/stargazers)
[![GitHub stars](https://img.shields.io/github/watchers/Material-Blazor/CompressedStaticFiles.AspNetCore?logo=github&style=flat-square)](https://github.com/Material-Blazor/CompressedStaticFiles.AspNetCore/watchers)
[![GitHub license](https://img.shields.io/badge/license-Apache%202-blue.svg)](https://raw.githubusercontent.com/material-blazor/CompressedStaticFiles.AspNet/main/LICENSE)
[![GitHub issues](https://img.shields.io/github/issues/Material-Blazor/CompressedStaticFiles.AspNet?logo=github&style=flat-square)](https://github.com/Material-Blazor/CompressedStaticFiles.AspNet/issues)
[![GitHub forks](https://img.shields.io/github/forks/Material-Blazor/CompressedStaticFiles.AspNet?logo=github&style=flat-square)](https://github.com/Material-Blazor/CompressedStaticFiles.AspNet/network/members)
[![GitHub stars](https://img.shields.io/github/stars/Material-Blazor/CompressedStaticFiles.AspNet?logo=github&style=flat-square)](https://github.com/Material-Blazor/CompressedStaticFiles.AspNet/stargazers)
[![GitHub stars](https://img.shields.io/github/watchers/Material-Blazor/CompressedStaticFiles.AspNet?logo=github&style=flat-square)](https://github.com/Material-Blazor/CompressedStaticFiles.AspNet/watchers)

---

[![GithubActionsMainPublish](https://img.shields.io/github/workflow/status/Material-Blazor/CompressedStaticFiles.AspNetCore/GithubActionsRelease?label=actions%20release&logo=github&style=flat-square)](https://github.com/Material-Blazor/CompressedStaticFiles.AspNetCore/actions?query=workflow%3AGithubActionsRelease)
[![GithubActionsDevelop](https://img.shields.io/github/workflow/status/Material-Blazor/CompressedStaticFiles.AspNetCore/GithubActionsWIP?label=actions%20wip&logo=github&style=flat-square)](https://github.com/Material-Blazor/CompressedStaticFiles.AspNetCore/actions?query=workflow%3AGithubActionsWIP)
[![GithubActionsMainPublish](https://img.shields.io/github/workflow/status/Material-Blazor/CompressedStaticFiles.AspNet/GithubActionsRelease?label=actions%20release&logo=github&style=flat-square)](https://github.com/Material-Blazor/CompressedStaticFiles.AspNet/actions?query=workflow%3AGithubActionsRelease)
[![GithubActionsDevelop](https://img.shields.io/github/workflow/status/Material-Blazor/CompressedStaticFiles.AspNet/GithubActionsWIP?label=actions%20wip&logo=github&style=flat-square)](https://github.com/Material-Blazor/CompressedStaticFiles.AspNet/actions?query=workflow%3AGithubActionsWIP)

---

Expand Down Expand Up @@ -55,7 +55,7 @@ Replace `UseStaticFiles();` with `UseCompressedStaticFiles();` in `Startup.Confi
By default CompressedStaticFiles is configured to allow slightly larger files for some image formats as they can store more pixels per byte, this can be disabled by calling `CompressedStaticFileOptions.RemoveImageSubstitutionCostRatio()`.

## Example
An example can be found in the [Example](https://github.com/material-blazor/CompressedStaticFiles.AspNetCore/tree/main/CompressedStaticFiles.Example) directory.
An example can be found in the [Example](https://github.com/material-blazor/CompressedStaticFiles.AspNet/tree/main/CompressedStaticFiles.Example) directory.
By using this package the Lighthouse mobile performance went from `76` to `98` and the transferred size went from `526 kb` to `141 kb`.

## Acknowledgements
Expand All @@ -67,4 +67,4 @@ We built this cloned project because:

- We wanted to update to the currently supported version of .NET;
- To make some refinements that were to our taste; and
- To add MSBuild code to the [example CSPROJ file](https://github.com/Material-Blazor/CompressedStaticFiles.AspNetCore/blob/main/CompressedStaticFiles.Example/CompressedStaticFiles.Example.csproj#L37) to build Brotli and Gzip compressed CSS and JS files, using a method contributed by [SQL-MisterMagoo](https://github.com/SQL-MisterMagoo).
- To add MSBuild code to the [example CSPROJ file](https://github.com/Material-Blazor/CompressedStaticFiles.AspNet/blob/main/CompressedStaticFiles.Example/CompressedStaticFiles.Example.csproj#L37) to build Brotli and Gzip compressed CSS and JS files, using a method contributed by [SQL-MisterMagoo](https://github.com/SQL-MisterMagoo).
19 changes: 3 additions & 16 deletions ReleaseNotes.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,12 @@ title: ReleaseNotes
---
# Release Notes

#### [1.0.1](https://github.com/Material-Blazor/CompressedStaticFiles.AspNetCore/tree/1.0.1)

Released 2022-09-15
#### [1.0.0](https://github.com/Material-Blazor/CompressedStaticFiles.AspNet/tree/1.0.0)

**Updates**

- Apply package updaets.

**Breaking Changes**

**Known issues**

<br />

#### [1.0.0](https://github.com/Material-Blazor/CompressedStaticFiles.AspNetCore/tree/1.0.0)

Released 2022-09-02
Released 2022-10-26

First full release of CompressedStaticFiles.AspNetCore.
First full release of CompressedStaticFiles.AspNet

**Updates**

Expand Down

0 comments on commit 64cd46b

Please sign in to comment.