Browse Source

重建.NET Framework版本的项目

懒得勤快 1 year ago
parent
commit
2e901a25ab

+ 0 - 12
Masuit.Tools/Config/CoreConfig.cs

@@ -1,12 +0,0 @@
-using System.Configuration;
-
-namespace Masuit.Tools.Config
-{
-    public static class ConfigHelper
-    {
-        public static string GetConfigOrDefault(string key, string defaultValue = "")
-        {
-            return ConfigurationManager.AppSettings.Get(key) ?? defaultValue;
-        }
-    }
-}

+ 0 - 243
Masuit.Tools/Files/SevenZipCompressor.cs

@@ -1,243 +0,0 @@
-using SharpCompress.Archives;
-using SharpCompress.Common;
-using SharpCompress.Writers;
-using System;
-using System.Collections.Concurrent;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Net.Http;
-using System.Text;
-using System.Threading.Tasks;
-using System.Web;
-using Masuit.Tools.Systems;
-
-namespace Masuit.Tools.Files
-{
-    /// <summary>
-    /// 7z压缩
-    /// </summary>
-    public static class SevenZipCompressor
-    {
-        /// <summary>
-        /// 将多个文件压缩到一个内存流中,可保存为zip文件,方便于web方式下载
-        /// </summary>
-        /// <param name="files">多个文件路径,文件或文件夹,或网络路径http/https</param>
-        /// <param name="rootdir"></param>
-        /// <returns>文件流</returns>
-        public static PooledMemoryStream ZipStream(List<string> files, string rootdir = "")
-        {
-            using var archive = CreateZipArchive(files, rootdir);
-            var ms = new PooledMemoryStream();
-            archive.SaveTo(ms, new WriterOptions(CompressionType.LZMA)
-            {
-                LeaveStreamOpen = true,
-                ArchiveEncoding = new ArchiveEncoding()
-                {
-                    Default = Encoding.UTF8
-                }
-            });
-            return ms;
-        }
-
-        /// <summary>
-        /// 将多个文件压缩到一个文件流中,可保存为zip文件,方便于web方式下载
-        /// </summary>
-        /// <param name="streams">多个文件流</param>
-        /// <param name="archiveType"></param>
-        /// <param name="disposeAllStreams">是否需要释放所有流</param>
-        /// <returns>文件流</returns>
-        public static PooledMemoryStream ZipStream(DisposableDictionary<string, Stream> streams, ArchiveType archiveType = ArchiveType.Zip, bool disposeAllStreams = false)
-        {
-            using var archive = ArchiveFactory.Create(archiveType);
-            foreach (var pair in streams)
-            {
-                archive.AddEntry(pair.Key, pair.Value, true);
-            }
-
-            var ms = new PooledMemoryStream();
-            archive.SaveTo(ms, new WriterOptions(CompressionType.LZMA)
-            {
-                LeaveStreamOpen = true,
-                ArchiveEncoding = new ArchiveEncoding()
-                {
-                    Default = Encoding.UTF8
-                }
-            });
-            if (disposeAllStreams)
-            {
-                streams.Dispose();
-            }
-            return ms;
-        }
-
-        /// <summary>
-        /// 压缩多个文件
-        /// </summary>
-        /// <param name="files">多个文件路径,文件或文件夹</param>
-        /// <param name="zipFile">压缩到...</param>
-        /// <param name="rootdir">压缩包内部根文件夹</param>
-        /// <param name="archiveType"></param>
-        public static void Zip(List<string> files, string zipFile, string rootdir = "", ArchiveType archiveType = ArchiveType.Zip)
-        {
-            using var archive = CreateZipArchive(files, rootdir, archiveType);
-            archive.SaveTo(zipFile, new WriterOptions(CompressionType.LZMA)
-            {
-                LeaveStreamOpen = true,
-                ArchiveEncoding = new ArchiveEncoding()
-                {
-                    Default = Encoding.UTF8
-                }
-            });
-        }
-
-        /// <summary>
-        /// 压缩多个文件
-        /// </summary>
-        /// <param name="streams">多个文件流</param>
-        /// <param name="zipFile">压缩到...</param>
-        /// <param name="archiveType"></param>
-        /// <param name="disposeAllStreams">是否需要释放所有流</param>
-        public static void Zip(DisposableDictionary<string, Stream> streams, string zipFile, ArchiveType archiveType = ArchiveType.Zip, bool disposeAllStreams = false)
-        {
-            using var archive = ArchiveFactory.Create(archiveType);
-            foreach (var pair in streams)
-            {
-                archive.AddEntry(pair.Key, pair.Value, true);
-            }
-
-            archive.SaveTo(zipFile, new WriterOptions(CompressionType.LZMA)
-            {
-                LeaveStreamOpen = true,
-                ArchiveEncoding = new ArchiveEncoding()
-                {
-                    Default = Encoding.UTF8
-                }
-            });
-            if (disposeAllStreams)
-            {
-                streams.Dispose();
-            }
-        }
-
-        /// <summary>
-        /// 解压文件,自动检测压缩包类型
-        /// </summary>
-        /// <param name="compressedFile">rar文件</param>
-        /// <param name="dir">解压到...</param>
-        public static void Decompress(string compressedFile, string dir)
-        {
-            if (string.IsNullOrEmpty(dir))
-            {
-                dir = Path.GetDirectoryName(compressedFile);
-            }
-
-            ArchiveFactory.WriteToDirectory(compressedFile, Directory.CreateDirectory(dir).FullName, new ExtractionOptions()
-            {
-                ExtractFullPath = true,
-                Overwrite = true
-            });
-        }
-
-        /// <summary>
-        /// 创建zip包
-        /// </summary>
-        /// <param name="files"></param>
-        /// <param name="rootdir"></param>
-        /// <param name="archiveType"></param>
-        /// <returns></returns>
-        private static IWritableArchive CreateZipArchive(List<string> files, string rootdir, ArchiveType archiveType = ArchiveType.Zip)
-        {
-            var archive = ArchiveFactory.Create(archiveType);
-            var dic = GetFileEntryMaps(files);
-            var remoteUrls = files.Distinct().Where(s => s.StartsWith("http")).Select(s =>
-            {
-                try
-                {
-                    return new Uri(s);
-                }
-                catch (UriFormatException)
-                {
-                    return null;
-                }
-            }).Where(u => u != null).ToList();
-            foreach (var pair in dic)
-            {
-                archive.AddEntry(Path.Combine(rootdir, pair.Value), pair.Key);
-            }
-
-            if (remoteUrls.Any())
-            {
-                var streams = new ConcurrentDictionary<string, Stream>();
-                using var httpClient = new HttpClient();
-                Parallel.ForEach(remoteUrls, url =>
-                {
-                    httpClient.GetAsync(url).ContinueWith(async t =>
-                    {
-                        if (t.IsCompleted)
-                        {
-                            var res = await t;
-                            if (res.IsSuccessStatusCode)
-                            {
-                                Stream stream = await res.Content.ReadAsStreamAsync();
-                                streams[Path.Combine(rootdir, Path.GetFileName(HttpUtility.UrlDecode(url.AbsolutePath)))] = stream;
-                            }
-                        }
-                    }).Wait();
-                });
-                foreach (var kv in streams)
-                {
-                    archive.AddEntry(kv.Key, kv.Value, true);
-                }
-            }
-
-            return archive;
-        }
-
-        /// <summary>
-        /// 获取文件路径和zip-entry的映射
-        /// </summary>
-        /// <param name="files"></param>
-        /// <returns></returns>
-        private static Dictionary<string, string> GetFileEntryMaps(List<string> files)
-        {
-            var fileList = new List<string>();
-            void GetFilesRecurs(string path)
-            {
-                //遍历目标文件夹的所有文件
-                fileList.AddRange(Directory.GetFiles(path));
-
-                //遍历目标文件夹的所有文件夹
-                foreach (string directory in Directory.GetDirectories(path))
-                {
-                    GetFilesRecurs(directory);
-                }
-            }
-
-            files.Where(s => !s.StartsWith("http")).ForEach(s =>
-            {
-                if (Directory.Exists(s))
-                {
-                    GetFilesRecurs(s);
-                }
-                else
-                {
-                    fileList.Add(s);
-                }
-            });
-            if (!fileList.Any())
-            {
-                return new Dictionary<string, string>();
-            }
-
-            var dirname = new string(fileList.First().Substring(0, fileList.Min(s => s.Length)).TakeWhile((c, i) => fileList.All(s => s[i] == c)).ToArray());
-            if (!Directory.Exists(dirname))
-            {
-                dirname = Directory.GetParent(dirname).FullName;
-            }
-
-            var dic = fileList.ToDictionary(s => s, s => s.Substring(dirname.Length));
-            return dic;
-        }
-    }
-}

+ 47 - 232
Masuit.Tools/Masuit.Tools.csproj

@@ -1,233 +1,48 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{275D5A0D-C49C-497E-A4B5-F40285C2495F}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Masuit.Tools</RootNamespace>
-    <AssemblyName>Masuit.Tools</AssemblyName>
-    <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
-    <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>
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-    <DocumentationFile>bin\Debug\Masuit.Tools.XML</DocumentationFile>
-    <NoWarn>1591</NoWarn>
-    <CodeAnalysisRuleSet />
-    <LangVersion>latest</LangVersion>
-  </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>
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-    <DocumentationFile>bin\Release\Masuit.Tools.XML</DocumentationFile>
-    <NoWarn>1591</NoWarn>
-    <CodeAnalysisRuleSet />
-    <LangVersion>latest</LangVersion>
-  </PropertyGroup>
-  <PropertyGroup>
-    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
-  </PropertyGroup>
-  <ItemGroup>
-    <Compile Include="..\Masuit.Tools.Abstractions\Database\*.*">
-      <Link>Database\%(RecursiveDir)%(FileName)%(Extension)</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\DateTimeExt\*.*">
-      <Link>DateTimeExt\%(RecursiveDir)%(FileName)%(Extension)</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Extensions\*\*.*">
-      <Link>Extensions\%(RecursiveDir)%(FileName)%(Extension)</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Extensions\Dynamics\*\*.*">
-      <Link>Extensions\Dynamics\%(RecursiveDir)%(FileName)%(Extension)</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Files\FileDetector\*.*">
-      <Link>Files\FileDetector\%(RecursiveDir)%(FileName)%(Extension)</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Files\FileDetector\*\*.*">
-      <Link>Files\FileDetector\%(RecursiveDir)%(FileName)%(Extension)</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Files\IniFile\*.*">
-      <Link>Files\IniFile\%(RecursiveDir)%(FileName)%(Extension)</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Files\FileExt.cs">
-      <Link>Files\FileExt.cs</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Files\TextEncodingDetector.cs">
-      <Link>Files\TextEncodingDetector.cs</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Hardware\BiosInfo.cs">
-      <Link>Hardware\BiosInfo.cs</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Hardware\CpuInfo.cs">
-      <Link>Hardware\CpuInfo.cs</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Hardware\DiskData.cs">
-      <Link>Hardware\DiskData.cs</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Hardware\DiskInfo.cs">
-      <Link>Hardware\DiskInfo.cs</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Hardware\NetData.cs">
-      <Link>Hardware\NetData.cs</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Hardware\RamInfo.cs">
-      <Link>Hardware\RamInfo.cs</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Hardware\SystemInfo.cs">
-      <Link>Hardware\SystemInfo.cs</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Hardware\Unit.cs">
-      <Link>Hardware\Unit.cs</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Logging\*.*">
-      <Link>Logging\%(RecursiveDir)%(FileName)%(Extension)</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Maths\*.*">
-      <Link>Maths\%(RecursiveDir)%(FileName)%(Extension)</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Media\*.*">
-      <Link>Media\%(RecursiveDir)%(FileName)%(Extension)</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Mime\*.*">
-      <Link>Mime\%(RecursiveDir)%(FileName)%(Extension)</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Models\*.*">
-      <Link>Models\%(RecursiveDir)%(FileName)%(Extension)</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Html\HtmlTools.cs">
-      <Link>Html\HtmlTools.cs</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Linq\LinqExtension.cs">
-      <Link>Linq\LinqExtension.cs</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Net\MultiThreadDownloader.cs">
-      <Link>Net\MultiThreadDownloader.cs</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Net\PartialDownloader.cs">
-      <Link>Net\PartialDownloader.cs</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\RandomSelector\*.*">
-      <Link>RandomSelector\%(RecursiveDir)%(FileName)%(Extension)</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Security\*.*">
-      <Link>Security\%(RecursiveDir)%(FileName)%(Extension)</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Reflection\*.*">
-      <Link>Reflection\%(RecursiveDir)%(FileName)%(Extension)</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Strings\NumberFormater.cs">
-      <Link>Strings\NumberFormater.cs</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Strings\SimHash.cs">
-      <Link>Strings\SimHash.cs</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Strings\Template.cs">
-      <Link>Strings\Template.cs</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Strings\UnicodeFormater.cs">
-      <Link>Strings\UnicodeFormater.cs</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Systems\*.*">
-      <Link>Systems\%(RecursiveDir)%(FileName)%(Extension)</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Validator\*.*">
-      <Link>Validator\%(RecursiveDir)%(FileName)%(Extension)</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Win32\*.*">
-      <Link>Win32\%(RecursiveDir)%(FileName)%(Extension)</Link>
-    </Compile>
-    <Compile Include="..\Masuit.Tools.Abstractions\Win32\*\*.*">
-      <Link>Win32\%(RecursiveDir)%(FileName)%(Extension)</Link>
-    </Compile>
-    <Compile Include="Config\CoreConfig.cs" />
-    <Compile Include="Files\SevenZipCompressor.cs" />
-    <Compile Include="Files\ExtensionAttach.cs" />
-    <Compile Include="Mvc\ActionResults\ResumeActionResultBase.cs" />
-    <Compile Include="Mvc\ActionResults\ResumeFileContentResult.cs" />
-    <Compile Include="Mvc\ActionResults\ResumeFilePathResult.cs" />
-    <Compile Include="Mvc\ActionResults\ResumeFileStreamResult.cs" />
-    <Compile Include="Mvc\ActionResults\ResumeRequest.cs" />
-    <Compile Include="Mvc\ControllerExtension.cs" />
-    <Compile Include="Mvc\HttpHeaders.cs" />
-    <Compile Include="Mvc\Internal\ByteRange.cs" />
-    <Compile Include="Mvc\ActionResults\ResumeFileResult.cs" />
-    <Compile Include="Net\CacheHelper.cs" />
-    <Compile Include="Net\CookieHelper.cs" />
-    <Compile Include="Net\WebExtension.cs" />
-    <Compile Include="NoSQL\RedisConnectionManager.cs" />
-    <Compile Include="NoSQL\RedisHelper.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Strings\ValidateCode.cs" />
-    <Compile Include="Systems\IDictionaryExtensions.cs" />
-    <Compile Include="Systems\Lock.cs" />
-    <Compile Include="Systems\RedisLock.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="app.config" />
-    <None Include="package.nuspec" />
-  </ItemGroup>
-  <ItemGroup>
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System" />
-    <Reference Include="System.ComponentModel.DataAnnotations" />
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Management" />
-    <Reference Include="System.Net" />
-    <Reference Include="System.Web" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <PackageReference Include="Castle.Core">
-      <Version>5.1.1</Version>
-    </PackageReference>
-    <PackageReference Include="DnsClient">
-      <Version>1.8.0</Version>
-    </PackageReference>
-    <PackageReference Include="HtmlSanitizer">
-      <Version>8.1.870</Version>
-    </PackageReference>
-    <PackageReference Include="Microsoft.AspNet.Mvc">
-      <Version>5.3.0</Version>
-    </PackageReference>
-    <PackageReference Include="Newtonsoft.Json">
-      <Version>13.0.3</Version>
-    </PackageReference>
-    <PackageReference Include="SharpCompress">
-      <Version>0.37.2</Version>
-    </PackageReference>
-    <PackageReference Include="SixLabors.ImageSharp.Drawing">
-      <Version>1.0.0</Version>
-    </PackageReference>
-    <PackageReference Include="StackExchange.Redis">
-      <Version>2.8.0</Version>
-    </PackageReference>
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
+<Project Sdk="Microsoft.NET.Sdk">
+    <PropertyGroup>
+        <TargetFramework>net461</TargetFramework>
+        <LangVersion>latest</LangVersion>
+        <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+        <Authors>懒得勤快</Authors>
+        <Description>
+            全龄段友好的C#万能工具库,码数吐司库,不管你是菜鸟新手还是骨灰级玩家都能轻松上手,Masuit.Tools(适用于.NET Framework 4.6.1及以上项目),包含一些常用的操作类,大都是静态类,加密解密,反射操作,Excel简单导出,权重随机筛选算法,分布式短id,表达式树,linq扩展,文件压缩,多线程下载和FTP客户端,硬件信息,字符串扩展方法,日期时间扩展操作,中国农历,大文件拷贝,图像裁剪,验证码,断点续传,集合扩展等常用封装。
+            官网教程:https://masuit.tools
+            github:https://github.com/ldqk/Masuit.Tools
+        </Description>
+        <Copyright>懒得勤快,长空X</Copyright>
+        <RepositoryUrl>https://github.com/ldqk/Masuit.Tools</RepositoryUrl>
+        <PackageProjectUrl>https://github.com/ldqk/Masuit.Tools</PackageProjectUrl>
+        <PackageTags>Masuit.Tools,工具库,Utility,Crypt,Extensions</PackageTags>
+        <PackageReleaseNotes>Masuit.Tools基础公共库,如有问题请联系作者QQ:3444764617,或者到项目的github反馈问题,详细的API文档在github上:https://github.com/ldqk/Masuit.Tools</PackageReleaseNotes>
+        <Product>Masuit.Tools.Net</Product>
+        <PackageId>Masuit.Tools.Net</PackageId>
+        <RepositoryType></RepositoryType>
+        <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
+        <PackageRequireLicenseAcceptance>False</PackageRequireLicenseAcceptance>
+        <FileVersion>2.5.9</FileVersion>
+        <Company>masuit.org</Company>
+        <AssemblyVersion>2.5.9</AssemblyVersion>
+        <PackageLicenseUrl>https://github.com/ldqk/Masuit.Tools/blob/master/LICENSE</PackageLicenseUrl>
+        <EmbedUntrackedSources>true</EmbedUntrackedSources>
+        <IncludeSymbols>true</IncludeSymbols>
+        <SymbolPackageFormat>snupkg</SymbolPackageFormat>
+        <GenerateDocumentationFile>True</GenerateDocumentationFile>
+        <Title>Masuit.Tools</Title>
+        <PackageReadmeFile>README.md</PackageReadmeFile>
+        <SuppressTfmSupportBuildWarnings>true</SuppressTfmSupportBuildWarnings>
+        <SonarQubeExclude>True</SonarQubeExclude>
+    </PropertyGroup>
+
+    <ItemGroup>
+        <PackageReference Include="Microsoft.AspNet.Mvc" Version="5.3.0" />
+        <PackageReference Include="StackExchange.Redis" Version="2.8.0" />
+        <ProjectReference Include="..\Masuit.Tools.Abstractions\Masuit.Tools.Abstractions.csproj" />
+        <Reference Include="System.Web" />
+    </ItemGroup>
+    <ItemGroup>
+        <None Include="..\README.md">
+            <Pack>True</Pack>
+            <PackagePath>\</PackagePath>
+        </None>
+    </ItemGroup>
 </Project>

+ 0 - 2
Masuit.Tools/Masuit.Tools.csproj.DotSettings

@@ -1,2 +0,0 @@
-<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
-	<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">Latest</s:String></wpf:ResourceDictionary>

+ 0 - 42
Masuit.Tools/Properties/AssemblyInfo.cs

@@ -1,42 +0,0 @@
-using System.Reflection;
-using System.Resources;
-using System.Runtime.InteropServices;
-
-// 有关程序集的一般信息由以下
-// 控制。更改这些特性值可修改
-// 与程序集关联的信息。
-
-[assembly: AssemblyTitle("Masuit.Tools")]
-[assembly: AssemblyDescription("懒得勤快")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("masuit.com")]
-[assembly: AssemblyProduct("Masuit.Tools")]
-[assembly: AssemblyCopyright("Copyright ©  懒得勤快")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-//将 ComVisible 设置为 false 将使此程序集中的类型
-//对 COM 组件不可见。  如果需要从 COM 访问此程序集中的类型,
-//请将此类型的 ComVisible 特性设置为 true。
-
-[assembly: ComVisible(false)]
-
-// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
-
-[assembly: Guid("275d5a0d-c49c-497e-a4b5-f40285c2495f")]
-
-// 程序集的版本信息由下列四个值组成: 
-//
-//      主版本
-//      次版本
-//      生成号
-//      修订号
-//
-//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
-// 方法是按如下所示使用“*”: :
-// [assembly: AssemblyVersion("2.4.5.5")]
-
-[assembly: AssemblyVersion("2.4.5.5")]
-[assembly: AssemblyFileVersion("2.4.5.5")]
-[assembly: NeutralResourcesLanguage("zh-CN")]
-

+ 0 - 101
Masuit.Tools/Strings/ValidateCode.cs

@@ -1,101 +0,0 @@
-using System;
-using System.Drawing;
-using System.Drawing.Drawing2D;
-using System.IO;
-using System.Security.Cryptography;
-using System.Text;
-using System.Web;
-using Masuit.Tools.Systems;
-
-namespace Masuit.Tools.Strings
-{
-    /// <summary>
-    /// 画验证码
-    /// </summary>
-    public static class ValidateCode
-    {
-        /// <summary>
-        /// 生成验证码
-        /// </summary>
-        /// <param name="length">指定验证码的长度</param>
-        /// <returns>验证码字符串</returns>
-        public static string CreateValidateCode(int length)
-        {
-            string ch = "abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ1234567890@#$%&?";
-            byte[] b = new byte[4];
-            using var cpt = new RNGCryptoServiceProvider();
-            cpt.GetBytes(b);
-            var r = new Random(BitConverter.ToInt32(b, 0));
-            var sb = new StringBuilder();
-            for (int i = 0; i < length; i++)
-            {
-                sb.Append(ch[r.Next(ch.Length)]);
-            }
-
-            return sb.ToString();
-        }
-
-        /// <summary>
-        /// 创建验证码的图片
-        /// </summary>
-        /// <param name="validateCode">验证码序列</param>
-        /// <param name="context">当前的HttpContext上下文对象</param>
-        /// <param name="fontSize">字体大小,默认值22px</param>
-        /// <param name="lineHeight">行高,默认36px</param>
-        /// <exception cref="Exception">The operation failed.</exception>
-        public static byte[] CreateValidateGraphic(this HttpContext context, string validateCode, int fontSize = 22, int lineHeight = 36)
-        {
-            using Bitmap image = new Bitmap((int)Math.Ceiling(validateCode.Length * (fontSize + 2.0)), lineHeight);
-            using Graphics g = Graphics.FromImage(image);
-
-            //生成随机生成器
-            Random random = new Random();
-
-            //清空图片背景色
-            g.Clear(Color.White);
-
-            //画图片的干扰线
-            for (int i = 0; i < 75; i++)
-            {
-                int x1 = random.Next(image.Width);
-                int x2 = random.Next(image.Width);
-                int y1 = random.Next(image.Height);
-                int y2 = random.Next(image.Height);
-                g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
-            }
-
-            Font[] fonts =
-            {
-                new Font("Arial", fontSize, FontStyle.Bold | FontStyle.Italic),
-                new Font("微软雅黑", fontSize, FontStyle.Bold | FontStyle.Italic),
-                new Font("黑体", fontSize, FontStyle.Bold | FontStyle.Italic),
-                new Font("宋体", fontSize, FontStyle.Bold | FontStyle.Italic),
-                new Font("楷体", fontSize, FontStyle.Bold | FontStyle.Italic)
-            };
-
-            //渐变.
-            using var brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);
-            g.DrawString(validateCode, fonts[new Random().Next(fonts.Length)], brush, 3, 2);
-
-            //画图片的前景干扰点
-            for (int i = 0; i < 300; i++)
-            {
-                int x = random.Next(image.Width);
-                int y = random.Next(image.Height);
-                image.SetPixel(x, y, Color.FromArgb(random.Next()));
-            }
-
-            //画图片的边框线
-            g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
-
-            //保存图片数据
-            using var stream = new PooledMemoryStream();
-            image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
-
-            //输出图片流
-            context.Response.Clear();
-            context.Response.ContentType = "image/jpeg";
-            return stream.ToArray();
-        }
-    }
-}

+ 0 - 62
Masuit.Tools/app.config

@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-    <startup>
-        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
-    </startup>
-    <runtime>
-        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
-            <dependentAssembly>
-                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
-                <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
-            </dependentAssembly>
-            <dependentAssembly>
-                <assemblyIdentity name="AngleSharp" publicKeyToken="e83494dcdc6d31ea" culture="neutral"/>
-                <bindingRedirect oldVersion="0.0.0.0-0.13.0.0" newVersion="0.13.0.0"/>
-            </dependentAssembly>
-            <dependentAssembly>
-                <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
-                <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0"/>
-            </dependentAssembly>
-            <dependentAssembly>
-                <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
-                <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
-            </dependentAssembly>
-            <dependentAssembly>
-                <assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
-                <bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1"/>
-            </dependentAssembly>
-            <dependentAssembly>
-                <assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
-                <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
-            </dependentAssembly>
-            <dependentAssembly>
-                <assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
-                <bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1"/>
-            </dependentAssembly>
-            <dependentAssembly>
-                <assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
-                <bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0"/>
-            </dependentAssembly>
-            <dependentAssembly>
-                <assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral"/>
-                <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0"/>
-            </dependentAssembly>
-            <dependentAssembly>
-                <assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
-                <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0"/>
-            </dependentAssembly>
-            <dependentAssembly>
-                <assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
-                <bindingRedirect oldVersion="0.0.0.0-5.0.0.1" newVersion="5.0.0.1"/>
-            </dependentAssembly>
-            <dependentAssembly>
-                <assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
-                <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
-            </dependentAssembly>
-            <dependentAssembly>
-                <assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
-                <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
-            </dependentAssembly>
-        </assemblyBinding>
-    </runtime>
-</configuration>

+ 0 - 18
Masuit.Tools/package.nuspec

@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-<package>
-    <metadata>
-        <id>Masuit.Tools.Net</id>
-        <version>2024.4.5</version>
-        <title>Masuit.Tools</title>
-        <authors>懒得勤快</authors>
-        <owners>masuit.com</owners>
-        <projectUrl>https://github.com/ldqk/Masuit.Tools</projectUrl>
-        <requireLicenseAcceptance>false</requireLicenseAcceptance>
-        <description>全龄段友好的C#万能工具库,码数吐司库(适用于.NET Framework 4.6.1+项目),不管你是菜鸟新手还是骨灰级玩家都能轻松上手,包含一些常用的操作类,大都是静态类,加密解密,反射操作,权重随机筛选算法,分布式短id,表达式树,linq扩展,文件压缩,多线程下载和FTP客户端,硬件信息,字符串扩展方法,日期时间扩展操作,中国农历,大文件拷贝,图像裁剪,验证码,断点续传,集合扩展等常用封装。
-官网教程:https://tools.masuit.org
-github:https://github.com/ldqk/Masuit.Tools</description>
-        <releaseNotes>如有问题请联系作者QQ:3444764617,或者到项目的github反馈问题,详细的API文档在github上:https://github.com/ldqk/Masuit.Tools</releaseNotes>
-        <copyright>Copyright ©  懒得勤快</copyright>
-        <tags>Masuit.Tools,工具库,Utility,Crypt,Extensions</tags>
-    </metadata>
-</package>