mirror of
https://github.com/nsnail/ns-ext.git
synced 2025-06-17 17:53:21 +08:00
[BLD] [SKIP CI]
This commit is contained in:
parent
d18f950d84
commit
ec380add5f
3
.gitignore
vendored
3
.gitignore
vendored
@ -400,5 +400,6 @@ FodyWeavers.xsd
|
|||||||
|
|
||||||
# User Define
|
# User Define
|
||||||
dist/
|
dist/
|
||||||
nuget.config
|
refs/
|
||||||
*.[Dd]esigner.cs
|
*.[Dd]esigner.cs
|
||||||
|
*.db
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
[hook "startcommit"]
|
[hook "startcommit"]
|
||||||
cmdline = code-format.cmd
|
cmdline = dot.clean.cmd
|
||||||
wait = true
|
wait = true
|
||||||
show = true
|
show = true
|
@ -1,14 +0,0 @@
|
|||||||
using System.Text.RegularExpressions;
|
|
||||||
|
|
||||||
var slnFile = Directory.GetFiles(@".", "*.sln").First();
|
|
||||||
var content = File.ReadAllText(slnFile);
|
|
||||||
content = Regex.Replace(content,@"ProjectSection\(SolutionItems\) = preProject(?:.|\n)*?EndProjectSection",
|
|
||||||
$"""
|
|
||||||
ProjectSection(SolutionItems) = preProject
|
|
||||||
{string.Join('\n',
|
|
||||||
Directory.GetFiles(@".", "*").Where(x => !x.EndsWith(".sln"))
|
|
||||||
.Select(x=>$"\t\t{Path.GetFileName(x)} = {Path.GetFileName(x)}"))}
|
|
||||||
{'\t'}EndProjectSection
|
|
||||||
""");
|
|
||||||
Console.WriteLine(content);
|
|
||||||
File.WriteAllText(slnFile, content);
|
|
@ -1,27 +0,0 @@
|
|||||||
#r "nuget: Newtonsoft.Json, 13.0.0"
|
|
||||||
|
|
||||||
using System.Xml;
|
|
||||||
using System.IO;
|
|
||||||
using Newtonsoft.Json.Linq;
|
|
||||||
|
|
||||||
var path = Directory.GetFiles(@".idea", "workspace.xml", SearchOption.AllDirectories).First();
|
|
||||||
XmlDocument xdoc = new XmlDocument();
|
|
||||||
using(var fs = File.Open(path, FileMode.Open)){
|
|
||||||
xdoc.Load(fs);
|
|
||||||
fs.Seek(0, SeekOrigin.Begin);
|
|
||||||
var propertiesComponent = xdoc.SelectSingleNode("""//component[@name="PropertiesComponent"]""");
|
|
||||||
var jsonStr = propertiesComponent.InnerText;
|
|
||||||
var jsonObj = JObject.Parse(jsonStr);
|
|
||||||
var keyToStringObj = jsonObj["keyToString"] as JObject;
|
|
||||||
if (keyToStringObj.ContainsKey("rider.code.cleanup.on.save")) return;
|
|
||||||
|
|
||||||
keyToStringObj.Add(new JProperty("rider.code.cleanup.on.save", "true"));
|
|
||||||
var newNode = xdoc.CreateCDataSection(jsonObj.ToString());
|
|
||||||
propertiesComponent.InnerText=string.Empty;
|
|
||||||
propertiesComponent.AppendChild(newNode);
|
|
||||||
var settings = new XmlWriterSettings { Indent = true };
|
|
||||||
using(var writer = XmlWriter.Create(fs, settings)){
|
|
||||||
xdoc.WriteTo(writer);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -6,8 +6,21 @@
|
|||||||
<BaseIntermediateOutputPath>$(SolutionDir)/dist/$(MSBuildProjectName)/obj</BaseIntermediateOutputPath>
|
<BaseIntermediateOutputPath>$(SolutionDir)/dist/$(MSBuildProjectName)/obj</BaseIntermediateOutputPath>
|
||||||
<BaseOutputPath>$(SolutionDir)/dist/$(MSBuildProjectName)/bin</BaseOutputPath>
|
<BaseOutputPath>$(SolutionDir)/dist/$(MSBuildProjectName)/bin</BaseOutputPath>
|
||||||
<Copyright>© 2006-2023 nsnail</Copyright>
|
<Copyright>© 2006-2023 nsnail</Copyright>
|
||||||
|
<Description>A .NET extension function library</Description>
|
||||||
<EnableBaseIntermediateOutputPathMismatchWarning>false</EnableBaseIntermediateOutputPathMismatchWarning>
|
<EnableBaseIntermediateOutputPathMismatchWarning>false</EnableBaseIntermediateOutputPathMismatchWarning>
|
||||||
|
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<TargetFramework>net7.0</TargetFramework>
|
<MinVerDefaultPreReleaseIdentifiers>beta</MinVerDefaultPreReleaseIdentifiers>
|
||||||
|
<Product>NSExt</Product>
|
||||||
|
<RepositoryType>git</RepositoryType>
|
||||||
|
<RepositoryUrl>https://github.com/nsnail/NSExt.git</RepositoryUrl>
|
||||||
|
<TargetFrameworks>net7.0;net8.0</TargetFrameworks>
|
||||||
|
<Title>$(AssemblyName)</Title>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="MinVer" Version="5.0.0-alpha.1">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
@ -1,45 +0,0 @@
|
|||||||
/*
|
|
||||||
for %%i in (*.png) do pngquant %%i --force --output %%i --skip-if-larger
|
|
||||||
for %%i in (*.jpg) do jpegtran -copy none -optimize -perfect %%i %%i
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
var files = Directory.EnumerateFiles(".", "*.png"
|
|
||||||
, new EnumerationOptions {
|
|
||||||
RecurseSubdirectories = true
|
|
||||||
, AttributesToSkip = FileAttributes.ReparsePoint
|
|
||||||
, IgnoreInaccessible = true
|
|
||||||
})
|
|
||||||
.ToArray();
|
|
||||||
|
|
||||||
|
|
||||||
Parallel.ForEach(files, file => {
|
|
||||||
var startInfo = new ProcessStartInfo {
|
|
||||||
FileName = "pngquant"
|
|
||||||
, Arguments
|
|
||||||
= $"\"{file}\" --force --output \"{file}\" --skip-if-larger"
|
|
||||||
};
|
|
||||||
using var p = Process.Start(startInfo);
|
|
||||||
p.WaitForExit();
|
|
||||||
Console.WriteLine($"{file}: {p.ExitCode}");
|
|
||||||
});
|
|
||||||
|
|
||||||
files = new[] { "*.jpg", "*.jpeg" }
|
|
||||||
.SelectMany(x => Directory.EnumerateFiles(
|
|
||||||
".", x
|
|
||||||
, new EnumerationOptions {
|
|
||||||
RecurseSubdirectories = true
|
|
||||||
, AttributesToSkip = FileAttributes.ReparsePoint
|
|
||||||
, IgnoreInaccessible = true
|
|
||||||
}))
|
|
||||||
.ToArray();
|
|
||||||
|
|
||||||
Parallel.ForEach(files, file => {
|
|
||||||
var startInfo = new ProcessStartInfo {
|
|
||||||
FileName = "jpegtran"
|
|
||||||
, Arguments = $"-copy none -optimize -perfect \"{file}\" \"{file}\""
|
|
||||||
};
|
|
||||||
using var p = Process.Start(startInfo);
|
|
||||||
p.WaitForExit();
|
|
||||||
Console.WriteLine($"{file}: {p.ExitCode}");
|
|
||||||
});
|
|
16
NSExt.sln
16
NSExt.sln
@ -3,31 +3,33 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
|||||||
# Visual Studio Version 17
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 17.0.31903.59
|
VisualStudioVersion = 17.0.31903.59
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "meta", "meta", "{85E669CB-FC0A-4C1D-92DE-38D0662C257D}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "meta", "meta", "{5198A03D-0CAC-4828-A807-34A693F73859}"
|
||||||
ProjectSection(SolutionItems) = preProject
|
ProjectSection(SolutionItems) = preProject
|
||||||
.editorconfig = .editorconfig
|
.editorconfig = .editorconfig
|
||||||
.gitattributes = .gitattributes
|
.gitattributes = .gitattributes
|
||||||
.gitignore = .gitignore
|
.gitignore = .gitignore
|
||||||
.tgitconfig = .tgitconfig
|
.tgitconfig = .tgitconfig
|
||||||
AddMetaFilesToSln.csx = AddMetaFilesToSln.csx
|
|
||||||
build.cake = build.cake
|
build.cake = build.cake
|
||||||
code-format.cmd = code-format.cmd
|
code.cleanup.full.ps1 = code.cleanup.full.ps1
|
||||||
code.quality.props = code.quality.props
|
code.quality.props = code.quality.props
|
||||||
CodeCleanupOnSave.csx = CodeCleanupOnSave.csx
|
|
||||||
Directory.Build.props = Directory.Build.props
|
Directory.Build.props = Directory.Build.props
|
||||||
|
dot.clean.cmd = dot.clean.cmd
|
||||||
dotnet-tools.json = dotnet-tools.json
|
dotnet-tools.json = dotnet-tools.json
|
||||||
git-clean.cmd = git-clean.cmd
|
git.pr.ps1 = git.pr.ps1
|
||||||
|
git.rc.ps1 = git.rc.ps1
|
||||||
global.json = global.json
|
global.json = global.json
|
||||||
ImageOptimize.csx = ImageOptimize.csx
|
image.optimize.csx = image.optimize.csx
|
||||||
key.snk = key.snk
|
key.snk = key.snk
|
||||||
LICENSE = LICENSE
|
LICENSE = LICENSE
|
||||||
logo.png = logo.png
|
logo.png = logo.png
|
||||||
NSExt.sln.DotSettings = NSExt.sln.DotSettings
|
NSExt.sln.DotSettings = NSExt.sln.DotSettings
|
||||||
NSExt.sln.DotSettings.user = NSExt.sln.DotSettings.user
|
nuget.config = nuget.config
|
||||||
|
packable.props = packable.props
|
||||||
README.md = README.md
|
README.md = README.md
|
||||||
README.zh-CN.md = README.zh-CN.md
|
README.zh-CN.md = README.zh-CN.md
|
||||||
stylecop.analyzers.ruleset = stylecop.analyzers.ruleset
|
stylecop.analyzers.ruleset = stylecop.analyzers.ruleset
|
||||||
stylecop.json = stylecop.json
|
stylecop.json = stylecop.json
|
||||||
|
sync.metafiles.csx = sync.metafiles.csx
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NSExt.Tests", "src\NSExt.Tests\NSExt.Tests.csproj", "{557FBEF6-E6D5-4531-86DF-D772A10E2261}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NSExt.Tests", "src\NSExt.Tests\NSExt.Tests.csproj", "{557FBEF6-E6D5-4531-86DF-D772A10E2261}"
|
||||||
|
@ -1,8 +1,23 @@
|
|||||||
<wpf:ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xml:space="preserve">
|
<wpf:ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xml:space="preserve">
|
||||||
|
<s:String x:Key="/Default/CodeEditing/GenerateMemberBody/DocumentationGenerationKind/@EntryValue">Inherit</s:String>
|
||||||
|
<s:Boolean x:Key="/Default/CodeEditing/TypingAssist/SkipClosingBracesOnTabInStringLiterals/@EntryValue">True</s:Boolean>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=AssignmentInConditionalExpression/@EntryIndexedValue">DO_NOT_SHOW</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=UnusedAutoPropertyAccessor_002EGlobal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
|
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=UnusedAutoPropertyAccessor_002EGlobal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=UnusedAutoPropertyAccessor_002ELocal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
|
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=UnusedAutoPropertyAccessor_002ELocal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_ACCESSOR_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_ACCESSORHOLDER_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
|
||||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_FIELD_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
|
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_FIELD_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
|
||||||
<s:Boolean x:Key="/Default/ReSpeller/ReSpellerEnabled/@EntryValue">False</s:Boolean>
|
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_RECORD_FIELD_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ID/@EntryIndexedValue">ID</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IOS/@EntryIndexedValue">IOS</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IP/@EntryIndexedValue">IP</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=TypesAndNamespaces/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb_AaBb" /></s:String>
|
||||||
|
<s:String x:Key="/Default/CustomTools/CustomToolsData/@EntryValue"></s:String>
|
||||||
|
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpKeepExistingMigration/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpUseContinuousIndentInsideBracesMigration/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/ReSpeller/ReSpellerEnabled/@EntryValue">True</s:Boolean>
|
||||||
<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_BLANK_LINES_IN_CODE/@EntryValue">1</s:Int64>
|
<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_BLANK_LINES_IN_CODE/@EntryValue">1</s:Int64>
|
||||||
<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_BLANK_LINES_IN_DECLARATIONS/@EntryValue">1</s:Int64>
|
<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_BLANK_LINES_IN_DECLARATIONS/@EntryValue">1</s:Int64>
|
||||||
<s:String x:Key="/Default/CodeInspection/Highlighting/AnalysisEnabled/@EntryValue">OFF</s:String>
|
<s:String x:Key="/Default/CodeInspection/Highlighting/AnalysisEnabled/@EntryValue">OFF</s:String>
|
||||||
@ -55,5 +70,37 @@
|
|||||||
</Entry>
|
</Entry>
|
||||||
</TypePattern>
|
</TypePattern>
|
||||||
</Patterns></s:String>
|
</Patterns></s:String>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Aigc/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Biji/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Childs/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Depts/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=fenlei/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=FFFFFF/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Furion/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Haojia/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=hongbao/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=inte/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Lant/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=logourl/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Meituan/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=miaosha/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=nicktitle/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=qudao/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Responsing/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Smzdm/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Tabao/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=tablename/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Taobao/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Taoke/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Tese/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=timesort/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=weixin/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=XBOXONE/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=youhui/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=yugao/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=YYYYMMDD/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=YYYYMMDDHHMMSSFFFZZZZ/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=zhiyou/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=zhuanlan/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
|
||||||
</wpf:ResourceDictionary>
|
</wpf:ResourceDictionary>
|
@ -1,221 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<RuleSet Name="StyleCop.Analyzers rules with default action"
|
|
||||||
Description="StyleCop.Analyzers with default action. Rules with IsEnabledByDefault = false are disabled."
|
|
||||||
ToolsVersion="14.0">
|
|
||||||
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers.SpecialRules">
|
|
||||||
<Rule Id="SA0001" Action="Warning"/> <!-- XML comment analysis disabled -->
|
|
||||||
<Rule Id="SA0002" Action="Warning"/> <!-- Invalid settings file -->
|
|
||||||
</Rules>
|
|
||||||
|
|
||||||
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers.SpacingRules">
|
|
||||||
<Rule Id="SA1000" Action="Warning"/> <!-- Keywords should be spaced correctly -->
|
|
||||||
<Rule Id="SA1001" Action="None"/> <!-- Commas should be spaced correctly -->
|
|
||||||
<Rule Id="SA1002" Action="Warning"/> <!-- Semicolons should be spaced correctly -->
|
|
||||||
<Rule Id="SA1003" Action="Warning"/> <!-- Symbols should be spaced correctly -->
|
|
||||||
<Rule Id="SA1004" Action="Warning"/> <!-- Documentation lines should begin with single space -->
|
|
||||||
<Rule Id="SA1005" Action="Warning"/> <!-- Single line comments should begin with single space -->
|
|
||||||
<Rule Id="SA1006" Action="Warning"/> <!-- Preprocessor keywords should not be preceded by space -->
|
|
||||||
<Rule Id="SA1007" Action="Warning"/> <!-- Operator keyword should be followed by space -->
|
|
||||||
<Rule Id="SA1008" Action="None"/> <!-- Opening parenthesis should be spaced correctly -->
|
|
||||||
<Rule Id="SA1009" Action="Warning"/> <!-- Closing parenthesis should be spaced correctly -->
|
|
||||||
<Rule Id="SA1010" Action="Warning"/> <!-- Opening square brackets should be spaced correctly -->
|
|
||||||
<Rule Id="SA1011" Action="Warning"/> <!-- Closing square brackets should be spaced correctly -->
|
|
||||||
<Rule Id="SA1012" Action="Warning"/> <!-- Opening braces should be spaced correctly -->
|
|
||||||
<Rule Id="SA1013" Action="Warning"/> <!-- Closing braces should be spaced correctly -->
|
|
||||||
<Rule Id="SA1014" Action="Warning"/> <!-- Opening generic brackets should be spaced correctly -->
|
|
||||||
<Rule Id="SA1015" Action="Warning"/> <!-- Closing generic brackets should be spaced correctly -->
|
|
||||||
<Rule Id="SA1016" Action="Warning"/> <!-- Opening attribute brackets should be spaced correctly -->
|
|
||||||
<Rule Id="SA1017" Action="Warning"/> <!-- Closing attribute brackets should be spaced correctly -->
|
|
||||||
<Rule Id="SA1018" Action="Warning"/> <!-- Nullable type symbols should be spaced correctly -->
|
|
||||||
<Rule Id="SA1019" Action="Warning"/> <!-- Member access symbols should be spaced correctly -->
|
|
||||||
<Rule Id="SA1020" Action="Warning"/> <!-- Increment decrement symbols should be spaced correctly -->
|
|
||||||
<Rule Id="SA1021" Action="Warning"/> <!-- Negative signs should be spaced correctly -->
|
|
||||||
<Rule Id="SA1022" Action="Warning"/> <!-- Positive signs should be spaced correctly -->
|
|
||||||
<Rule Id="SA1023" Action="Warning"/> <!-- Dereference and access of symbols should be spaced correctly -->
|
|
||||||
<Rule Id="SA1024" Action="Warning"/> <!-- Colons should be spaced correctly -->
|
|
||||||
<Rule Id="SA1025" Action="None"/> <!-- Code should not contain multiple whitespace in a row -->
|
|
||||||
<Rule Id="SA1026" Action="Warning"/> <!-- Code should not contain space after new or stackalloc keyword in implicitly typed array allocation -->
|
|
||||||
<Rule Id="SA1027" Action="Warning"/> <!-- Use tabs correctly -->
|
|
||||||
<Rule Id="SA1028" Action="Warning"/> <!-- Code should not contain trailing whitespace -->
|
|
||||||
</Rules>
|
|
||||||
|
|
||||||
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers.ReadabilityRules">
|
|
||||||
<Rule Id="SA1100" Action="Warning"/> <!-- Do not prefix calls with base unless local implementation exists -->
|
|
||||||
<Rule Id="SA1101" Action="None"/> <!-- Prefix local calls with this -->
|
|
||||||
<Rule Id="SA1102" Action="Warning"/> <!-- Query clause should follow previous clause -->
|
|
||||||
<Rule Id="SA1103" Action="Warning"/> <!-- Query clauses should be on separate lines or all on one line -->
|
|
||||||
<Rule Id="SA1104" Action="Warning"/> <!-- Query clause should begin on new line when previous clause spans multiple lines -->
|
|
||||||
<Rule Id="SA1105" Action="Warning"/> <!-- Query clauses spanning multiple lines should begin on own line -->
|
|
||||||
<Rule Id="SA1106" Action="Warning"/> <!-- Code should not contain empty statements -->
|
|
||||||
<Rule Id="SA1107" Action="Warning"/> <!-- Code should not contain multiple statements on one line -->
|
|
||||||
<Rule Id="SA1108" Action="Warning"/> <!-- Block statements should not contain embedded comments -->
|
|
||||||
<Rule Id="SA1109" Action="Warning"/> <!-- Block statements should not contain embedded regions -->
|
|
||||||
<Rule Id="SA1110" Action="Warning"/> <!-- Opening parenthesis or bracket should be on declaration line -->
|
|
||||||
<Rule Id="SA1111" Action="Warning"/> <!-- Closing parenthesis should be on line of last parameter -->
|
|
||||||
<Rule Id="SA1112" Action="Warning"/> <!-- Closing parenthesis should be on line of opening parenthesis -->
|
|
||||||
<Rule Id="SA1113" Action="None"/> <!-- Comma should be on the same line as previous parameter -->
|
|
||||||
<Rule Id="SA1114" Action="Warning"/> <!-- Parameter list should follow declaration -->
|
|
||||||
<Rule Id="SA1115" Action="Warning"/> <!-- Parameter should follow comma -->
|
|
||||||
<Rule Id="SA1116" Action="Warning"/> <!-- Split parameters should start on line after declaration -->
|
|
||||||
<Rule Id="SA1117" Action="None"/> <!-- Parameters should be on same line or separate lines -->
|
|
||||||
<Rule Id="SA1118" Action="Warning"/> <!-- Parameter should not span multiple lines -->
|
|
||||||
<Rule Id="SA1120" Action="None"/> <!-- Comments should contain text -->
|
|
||||||
<Rule Id="SA1121" Action="Warning"/> <!-- Use built-in type alias -->
|
|
||||||
<Rule Id="SA1122" Action="Warning"/> <!-- Use string.Empty for empty strings -->
|
|
||||||
<Rule Id="SA1123" Action="Warning"/> <!-- Do not place regions within elements -->
|
|
||||||
<Rule Id="SA1124" Action="Warning"/> <!-- Do not use regions -->
|
|
||||||
<Rule Id="SA1125" Action="Warning"/> <!-- Use shorthand for nullable types -->
|
|
||||||
<Rule Id="SA1126" Action="Warning"/> <!-- Prefix calls correctly -->
|
|
||||||
<Rule Id="SA1127" Action="Warning"/> <!-- Generic type constraints should be on their own line -->
|
|
||||||
<Rule Id="SA1128" Action="Warning"/> <!-- Put constructor initializers on their own line -->
|
|
||||||
<Rule Id="SA1129" Action="Warning"/> <!-- Do not use default value type constructor -->
|
|
||||||
<Rule Id="SA1130" Action="Warning"/> <!-- Use lambda syntax -->
|
|
||||||
<Rule Id="SA1131" Action="Warning"/> <!-- Use readable conditions -->
|
|
||||||
<Rule Id="SA1132" Action="Warning"/> <!-- Do not combine fields -->
|
|
||||||
<Rule Id="SA1133" Action="Warning"/> <!-- Do not combine attributes -->
|
|
||||||
<Rule Id="SA1134" Action="Warning"/> <!-- Attributes should not share line -->
|
|
||||||
<Rule Id="SA1135" Action="Warning"/> <!-- Using directives should be qualified -->
|
|
||||||
<Rule Id="SA1136" Action="Warning"/> <!-- Enum values should be on separate lines -->
|
|
||||||
<Rule Id="SA1137" Action="Warning"/> <!-- Elements should have the same indentation -->
|
|
||||||
<Rule Id="SA1139" Action="Warning"/> <!-- Use literal suffix notation instead of casting -->
|
|
||||||
<Rule Id="SX1101" Action="Warning"/> <!-- Do not prefix local calls with 'this.' -->
|
|
||||||
</Rules>
|
|
||||||
|
|
||||||
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers.OrderingRules">
|
|
||||||
<Rule Id="SA1200" Action="None"/> <!-- Using directives should be placed correctly -->
|
|
||||||
<Rule Id="SA1201" Action="Warning"/> <!-- Elements should appear in the correct order -->
|
|
||||||
<Rule Id="SA1202" Action="Warning"/> <!-- Elements should be ordered by access -->
|
|
||||||
<Rule Id="SA1203" Action="Warning"/> <!-- Constants should appear before fields -->
|
|
||||||
<Rule Id="SA1204" Action="Warning"/> <!-- Static elements should appear before instance elements -->
|
|
||||||
<Rule Id="SA1205" Action="Warning"/> <!-- Partial elements should declare access -->
|
|
||||||
<Rule Id="SA1206" Action="Warning"/> <!-- Declaration keywords should follow order -->
|
|
||||||
<Rule Id="SA1207" Action="Warning"/> <!-- Protected should come before internal -->
|
|
||||||
<Rule Id="SA1208" Action="Warning"/> <!-- System using directives should be placed before other using directives -->
|
|
||||||
<Rule Id="SA1209" Action="Warning"/> <!-- Using alias directives should be placed after other using directives -->
|
|
||||||
<Rule Id="SA1210" Action="Warning"/> <!-- Using directives should be ordered alphabetically by namespace -->
|
|
||||||
<Rule Id="SA1211" Action="Warning"/> <!-- Using alias directives should be ordered alphabetically by alias name -->
|
|
||||||
<Rule Id="SA1212" Action="Warning"/> <!-- Property accessors should follow order -->
|
|
||||||
<Rule Id="SA1213" Action="Warning"/> <!-- Event accessors should follow order -->
|
|
||||||
<Rule Id="SA1214" Action="Warning"/> <!-- Readonly fields should appear before non-readonly fields -->
|
|
||||||
<Rule Id="SA1216" Action="Warning"/> <!-- Using static directives should be placed at the correct location -->
|
|
||||||
<Rule Id="SA1217" Action="Warning"/> <!-- Using static directives should be ordered alphabetically -->
|
|
||||||
</Rules>
|
|
||||||
|
|
||||||
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers.NamingRules">
|
|
||||||
<Rule Id="SA1300" Action="Warning"/> <!-- Element should begin with upper-case letter -->
|
|
||||||
<Rule Id="SA1301" Action="Warning"/> <!-- Element should begin with lower-case letter -->
|
|
||||||
<Rule Id="SA1302" Action="Warning"/> <!-- Interface names should begin with I -->
|
|
||||||
<Rule Id="SA1303" Action="Warning"/> <!-- Const field names should begin with upper-case letter -->
|
|
||||||
<Rule Id="SA1304" Action="Warning"/> <!-- Non-private readonly fields should begin with upper-case letter -->
|
|
||||||
<Rule Id="SA1305" Action="None"/> <!-- Field names should not use Hungarian notation -->
|
|
||||||
<Rule Id="SA1306" Action="Warning"/> <!-- Field names should begin with lower-case letter -->
|
|
||||||
<Rule Id="SA1307" Action="Warning"/> <!-- Accessible fields should begin with upper-case letter -->
|
|
||||||
<Rule Id="SA1308" Action="Warning"/> <!-- Variable names should not be prefixed -->
|
|
||||||
<Rule Id="SA1309" Action="None"/> <!-- Field names should not begin with underscore -->
|
|
||||||
<Rule Id="SA1310" Action="None"/> <!-- Field names should not contain underscore -->
|
|
||||||
<Rule Id="SA1311" Action="Warning"/> <!-- Static readonly fields should begin with upper-case letter -->
|
|
||||||
<Rule Id="SA1312" Action="Warning"/> <!-- Variable names should begin with lower-case letter -->
|
|
||||||
<Rule Id="SA1313" Action="Warning"/> <!-- Parameter names should begin with lower-case letter -->
|
|
||||||
<Rule Id="SA1314" Action="Warning"/> <!-- Type parameter names should begin with T -->
|
|
||||||
<Rule Id="SX1309" Action="Warning"/> <!-- Field names should begin with underscore -->
|
|
||||||
<Rule Id="SX1309S" Action="Warning"/> <!-- Static field names should begin with underscore -->
|
|
||||||
</Rules>
|
|
||||||
|
|
||||||
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers.MaintainabilityRules">
|
|
||||||
<Rule Id="SA1119" Action="Warning"/> <!-- Statement should not use unnecessary parenthesis -->
|
|
||||||
<Rule Id="SA1400" Action="Warning"/> <!-- Access modifier should be declared -->
|
|
||||||
<Rule Id="SA1401" Action="Warning"/> <!-- Fields should be private -->
|
|
||||||
<Rule Id="SA1402" Action="None"/> <!-- File may only contain a single type -->
|
|
||||||
<Rule Id="SA1403" Action="Warning"/> <!-- File may only contain a single namespace -->
|
|
||||||
<Rule Id="SA1404" Action="Warning"/> <!-- Code analysis suppression should have justification -->
|
|
||||||
<Rule Id="SA1405" Action="Warning"/> <!-- Debug.Assert should provide message text -->
|
|
||||||
<Rule Id="SA1406" Action="Warning"/> <!-- Debug.Fail should provide message text -->
|
|
||||||
<Rule Id="SA1407" Action="Warning"/> <!-- Arithmetic expressions should declare precedence -->
|
|
||||||
<Rule Id="SA1408" Action="Warning"/> <!-- Conditional expressions should declare precedence -->
|
|
||||||
<Rule Id="SA1409" Action="Warning"/> <!-- Remove unnecessary code -->
|
|
||||||
<Rule Id="SA1410" Action="Warning"/> <!-- Remove delegate parenthesis when possible -->
|
|
||||||
<Rule Id="SA1411" Action="Warning"/> <!-- Attribute constructor should not use unnecessary parenthesis -->
|
|
||||||
<Rule Id="SA1412" Action="None"/> <!-- Store files as UTF-8 with byte order mark -->
|
|
||||||
<Rule Id="SA1413" Action="None"/> <!-- Use trailing comma in multi-line initializers -->
|
|
||||||
</Rules>
|
|
||||||
|
|
||||||
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers.LayoutRules">
|
|
||||||
<Rule Id="SA1500" Action="None"/> <!-- Braces for multi-line statements should not share line -->
|
|
||||||
<Rule Id="SA1501" Action="Warning"/> <!-- Statement should not be on a single line -->
|
|
||||||
<Rule Id="SA1502" Action="None"/> <!-- Element should not be on a single line -->
|
|
||||||
<Rule Id="SA1503" Action="Warning"/> <!-- Braces should not be omitted -->
|
|
||||||
<Rule Id="SA1504" Action="Warning"/> <!-- All accessors should be single-line or multi-line -->
|
|
||||||
<Rule Id="SA1505" Action="Warning"/> <!-- Opening braces should not be followed by blank line -->
|
|
||||||
<Rule Id="SA1506" Action="Warning"/> <!-- Element documentation headers should not be followed by blank line -->
|
|
||||||
<Rule Id="SA1507" Action="Warning"/> <!-- Code should not contain multiple blank lines in a row -->
|
|
||||||
<Rule Id="SA1508" Action="Warning"/> <!-- Closing braces should not be preceded by blank line -->
|
|
||||||
<Rule Id="SA1509" Action="Warning"/> <!-- Opening braces should not be preceded by blank line -->
|
|
||||||
<Rule Id="SA1510" Action="Warning"/> <!-- Chained statement blocks should not be preceded by blank line -->
|
|
||||||
<Rule Id="SA1511" Action="Warning"/> <!-- While-do footer should not be preceded by blank line -->
|
|
||||||
<Rule Id="SA1512" Action="Warning"/> <!-- Single-line comments should not be followed by blank line -->
|
|
||||||
<Rule Id="SA1513" Action="Warning"/> <!-- Closing brace should be followed by blank line -->
|
|
||||||
<Rule Id="SA1514" Action="Warning"/> <!-- Element documentation header should be preceded by blank line -->
|
|
||||||
<Rule Id="SA1515" Action="Warning"/> <!-- Single-line comment should be preceded by blank line -->
|
|
||||||
<Rule Id="SA1516" Action="Warning"/> <!-- Elements should be separated by blank line -->
|
|
||||||
<Rule Id="SA1517" Action="Warning"/> <!-- Code should not contain blank lines at start of file -->
|
|
||||||
<Rule Id="SA1518" Action="Warning"/> <!-- Use line endings correctly at end of file -->
|
|
||||||
<Rule Id="SA1519" Action="Warning"/> <!-- Braces should not be omitted from multi-line child statement -->
|
|
||||||
<Rule Id="SA1520" Action="Warning"/> <!-- Use braces consistently -->
|
|
||||||
</Rules>
|
|
||||||
|
|
||||||
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers.DocumentationRules">
|
|
||||||
<Rule Id="SA1600" Action="None"/> <!-- Elements should be documented -->
|
|
||||||
<Rule Id="SA1601" Action="None"/> <!-- Partial elements should be documented -->
|
|
||||||
<Rule Id="SA1602" Action="None"/> <!-- Enumeration items should be documented -->
|
|
||||||
<Rule Id="SA1603" Action="Warning"/> <!-- Documentation should contain valid XML -->
|
|
||||||
<Rule Id="SA1604" Action="Warning"/> <!-- Element documentation should have summary -->
|
|
||||||
<Rule Id="SA1605" Action="Warning"/> <!-- Partial element documentation should have summary -->
|
|
||||||
<Rule Id="SA1606" Action="Warning"/> <!-- Element documentation should have summary text -->
|
|
||||||
<Rule Id="SA1607" Action="Warning"/> <!-- Partial element documentation should have summary text -->
|
|
||||||
<Rule Id="SA1608" Action="Warning"/> <!-- Element documentation should not have default summary -->
|
|
||||||
<Rule Id="SA1609" Action="None"/> <!-- Property documentation should have value -->
|
|
||||||
<Rule Id="SA1610" Action="Warning"/> <!-- Property documentation should have value text -->
|
|
||||||
<Rule Id="SA1611" Action="None"/> <!-- Element parameters should be documented -->
|
|
||||||
<Rule Id="SA1612" Action="Warning"/> <!-- Element parameter documentation should match element parameters -->
|
|
||||||
<Rule Id="SA1613" Action="Warning"/> <!-- Element parameter documentation should declare parameter name -->
|
|
||||||
<Rule Id="SA1614" Action="Warning"/> <!-- Element parameter documentation should have text -->
|
|
||||||
<Rule Id="SA1615" Action="None"/> <!-- Element return value should be documented -->
|
|
||||||
<Rule Id="SA1616" Action="Warning"/> <!-- Element return value documentation should have text -->
|
|
||||||
<Rule Id="SA1617" Action="Warning"/> <!-- Void return value should not be documented -->
|
|
||||||
<Rule Id="SA1618" Action="None"/> <!-- Generic type parameters should be documented -->
|
|
||||||
<Rule Id="SA1619" Action="None"/> <!-- Generic type parameters should be documented partial class -->
|
|
||||||
<Rule Id="SA1620" Action="Warning"/> <!-- Generic type parameter documentation should match type parameters -->
|
|
||||||
<Rule Id="SA1621" Action="Warning"/> <!-- Generic type parameter documentation should declare parameter name -->
|
|
||||||
<Rule Id="SA1622" Action="Warning"/> <!-- Generic type parameter documentation should have text -->
|
|
||||||
<Rule Id="SA1623" Action="None"/> <!-- Property summary documentation should match accessors -->
|
|
||||||
<Rule Id="SA1624" Action="Warning"/> <!-- Property summary documentation should omit accessor with restricted access -->
|
|
||||||
<Rule Id="SA1625" Action="Warning"/> <!-- Element documentation should not be copied and pasted -->
|
|
||||||
<Rule Id="SA1626" Action="Warning"/> <!-- Single-line comments should not use documentation style slashes -->
|
|
||||||
<Rule Id="SA1627" Action="Warning"/> <!-- Documentation text should not be empty -->
|
|
||||||
<Rule Id="SA1628" Action="Warning"/> <!-- Documentation text should begin with a capital letter -->
|
|
||||||
<Rule Id="SA1629" Action="None"/> <!-- Documentation text should end with a period -->
|
|
||||||
<Rule Id="SA1630" Action="Warning"/> <!-- Documentation text should contain whitespace -->
|
|
||||||
<Rule Id="SA1631" Action="Warning"/> <!-- Documentation should meet character percentage -->
|
|
||||||
<Rule Id="SA1632" Action="Warning"/> <!-- Documentation text should meet minimum character length -->
|
|
||||||
<Rule Id="SA1633" Action="None"/> <!-- File should have header -->
|
|
||||||
<Rule Id="SA1634" Action="Warning"/> <!-- File header should show copyright -->
|
|
||||||
<Rule Id="SA1635" Action="Warning"/> <!-- File header should have copyright text -->
|
|
||||||
<Rule Id="SA1636" Action="Warning"/> <!-- File header copyright text should match -->
|
|
||||||
<Rule Id="SA1637" Action="Warning"/> <!-- File header should contain file name -->
|
|
||||||
<Rule Id="SA1638" Action="Warning"/> <!-- File header file name documentation should match file name -->
|
|
||||||
<Rule Id="SA1639" Action="Warning"/> <!-- File header should have summary -->
|
|
||||||
<Rule Id="SA1640" Action="Warning"/> <!-- File header should have valid company text -->
|
|
||||||
<Rule Id="SA1641" Action="Warning"/> <!-- File header company name text should match -->
|
|
||||||
<Rule Id="SA1642" Action="Warning"/> <!-- Constructor summary documentation should begin with standard text -->
|
|
||||||
<Rule Id="SA1643" Action="Warning"/> <!-- Destructor summary documentation should begin with standard text -->
|
|
||||||
<Rule Id="SA1644" Action="Warning"/> <!-- Documentation headers should not contain blank lines -->
|
|
||||||
<Rule Id="SA1645" Action="Warning"/> <!-- Included documentation file does not exist -->
|
|
||||||
<Rule Id="SA1646" Action="Warning"/> <!-- Included documentation XPath does not exist -->
|
|
||||||
<Rule Id="SA1647" Action="Warning"/> <!-- Include node does not contain valid file and path -->
|
|
||||||
<Rule Id="SA1648" Action="Warning"/> <!-- Inheritdoc should be used with inheriting class -->
|
|
||||||
<Rule Id="SA1649" Action="Warning"/> <!-- File name should match first type name -->
|
|
||||||
<Rule Id="SA1650" Action="Warning"/> <!-- Element documentation should be spelled correctly -->
|
|
||||||
<Rule Id="SA1651" Action="Warning"/> <!-- Do not use placeholder elements -->
|
|
||||||
|
|
||||||
</Rules>
|
|
||||||
</RuleSet>
|
|
@ -1,3 +0,0 @@
|
|||||||
dot rbom -w
|
|
||||||
dot trim -w
|
|
||||||
dot tolf -w
|
|
1
code.cleanup.full.ps1
Normal file
1
code.cleanup.full.ps1
Normal file
@ -0,0 +1 @@
|
|||||||
|
dotnet jb cleanupcode --no-build ./NSExt.sln
|
@ -1,6 +1,8 @@
|
|||||||
<Project>
|
<Project>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<CodeAnalysisRuleSet>$(SolutionDir)/stylecop.analyzers.ruleset</CodeAnalysisRuleSet>
|
<CodeAnalysisRuleSet>$(SolutionDir)/stylecop.analyzers.ruleset</CodeAnalysisRuleSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
|
||||||
<CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
|
<CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
|
||||||
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
|
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
|
||||||
<MSBuildTreatWarningsAsErrors>true</MSBuildTreatWarningsAsErrors>
|
<MSBuildTreatWarningsAsErrors>true</MSBuildTreatWarningsAsErrors>
|
||||||
@ -17,7 +19,7 @@
|
|||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.9.0.77355">
|
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.11.0.78383">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
@ -33,9 +35,9 @@
|
|||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="NSCodeAnalysis" Version="1.0.1-alpha.0.2">
|
<!-- <PackageReference Include="NSCodeAnalysis" Version="1.0.1-alpha.0.2">-->
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<!-- <PrivateAssets>all</PrivateAssets>-->
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<!-- <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>-->
|
||||||
</PackageReference>
|
<!-- </PackageReference>-->
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
3
dot.clean.cmd
Normal file
3
dot.clean.cmd
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
dot rbom -w -e refs -e .git -e node_modules
|
||||||
|
dot trim -w -e refs -e .git -e node_modules
|
||||||
|
dot tolf -w -e refs -e .git -e node_modules
|
@ -1,6 +1,24 @@
|
|||||||
{
|
{
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"isRoot": true,
|
"isRoot": true,
|
||||||
"tools": {
|
"tools": {
|
||||||
|
"cake.tool": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"commands": [
|
||||||
|
"dotnet-cake"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"dotnet-script": {
|
||||||
|
"version": "1.4.0",
|
||||||
|
"commands": [
|
||||||
|
"dotnet-script"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"jetbrains.resharper.globaltools": {
|
||||||
|
"version": "2023.2.0",
|
||||||
|
"commands": [
|
||||||
|
"jb"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,2 +0,0 @@
|
|||||||
git reset --hard
|
|
||||||
git clean -d -fx .
|
|
26
git.pr.ps1
Normal file
26
git.pr.ps1
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
$types = @{
|
||||||
|
'1' = @('FEA', '新增特性')
|
||||||
|
'2' = @('REF', '项目重构')
|
||||||
|
'3' = @('FIX', '缺陷修复')
|
||||||
|
'4' = @('PER', '性能优化')
|
||||||
|
'5' = @('RVT', '还原变更')
|
||||||
|
'6' = @('FMT', '格式整理')
|
||||||
|
'7' = @('DOC', '文档变更')
|
||||||
|
'8' = @('TST', '单元测试')
|
||||||
|
'9' = @('BLD', '工程构建')
|
||||||
|
}
|
||||||
|
git add ./
|
||||||
|
$prefix = ''
|
||||||
|
while ($null -eq $types[$prefix])
|
||||||
|
{
|
||||||
|
$prefix = Read-Host "请选择提交类型`n" $( & { param($i) $i | ForEach-Object { "$_ : $( $types[$_][0] )($( $types[$_][1] ))`n" } } $types.Keys | Sort-Object )
|
||||||
|
}
|
||||||
|
git commit -m "[$($types[$prefix][0])] $(($(Read-Host '是否跳过自动构建?(Y/n)') -eq 'n') ? '': '[SKIP CI] ')$(Read-Host '请输入提交消息')"
|
||||||
|
$branch = $(git branch --show-current)
|
||||||
|
& './dot.clean.cmd'
|
||||||
|
git add ./
|
||||||
|
git commit --amend --no-edit
|
||||||
|
git pull
|
||||||
|
git push --set-upstream origin $branch
|
||||||
|
Start-Process -FilePath "https://github.com/nsnail/NSExt/compare/main...$branch"
|
||||||
|
Pause
|
6
git.rc.ps1
Normal file
6
git.rc.ps1
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
$branch = $(git branch --show-current)
|
||||||
|
git checkout main
|
||||||
|
git pull
|
||||||
|
git branch -D $branch
|
||||||
|
git branch $branch
|
||||||
|
git checkout $branch
|
16
global.json
16
global.json
@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"sdk": {
|
"sdk": {
|
||||||
"version": "7.0.100",
|
"version": "7.0.0",
|
||||||
"allowPrerelease": true,
|
"rollForward": "latestMajor",
|
||||||
"rollForward": "major"
|
"allowPrerelease": true
|
||||||
},
|
},
|
||||||
"tools": {
|
"tools": {
|
||||||
"dotnet": "7.0.100"
|
"dotnet": "7.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
65
image.optimize.csx
Normal file
65
image.optimize.csx
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
for %%i in (*.png) do pngquant %%i --force --output %%i --skip-if-larger
|
||||||
|
for %%i in (*.jpg) do jpegtran -copy none -optimize -perfect %%i %%i
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
var files = Directory
|
||||||
|
.EnumerateFiles(
|
||||||
|
"./",
|
||||||
|
"*.png",
|
||||||
|
new EnumerationOptions
|
||||||
|
{
|
||||||
|
RecurseSubdirectories = true,
|
||||||
|
AttributesToSkip = FileAttributes.ReparsePoint,
|
||||||
|
IgnoreInaccessible = true
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
Parallel.ForEach(
|
||||||
|
files,
|
||||||
|
file =>
|
||||||
|
{
|
||||||
|
var startInfo = new ProcessStartInfo
|
||||||
|
{
|
||||||
|
FileName = "pngquant",
|
||||||
|
Arguments = $"\"{file}\" --force --output \"{file}\" --skip-if-larger"
|
||||||
|
};
|
||||||
|
using var p = Process.Start(startInfo);
|
||||||
|
p.WaitForExit();
|
||||||
|
Console.WriteLine($"{file}: {p.ExitCode}");
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
files = new[] { "*.jpg", "*.jpeg" }
|
||||||
|
.SelectMany(
|
||||||
|
x =>
|
||||||
|
Directory.EnumerateFiles(
|
||||||
|
"./",
|
||||||
|
x,
|
||||||
|
new EnumerationOptions
|
||||||
|
{
|
||||||
|
RecurseSubdirectories = true,
|
||||||
|
AttributesToSkip = FileAttributes.ReparsePoint,
|
||||||
|
IgnoreInaccessible = true
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
Parallel.ForEach(
|
||||||
|
files,
|
||||||
|
file =>
|
||||||
|
{
|
||||||
|
var startInfo = new ProcessStartInfo
|
||||||
|
{
|
||||||
|
FileName = "jpegtran",
|
||||||
|
Arguments = $"-copy none -optimize -perfect \"{file}\" \"{file}\""
|
||||||
|
};
|
||||||
|
using var p = Process.Start(startInfo);
|
||||||
|
p.WaitForExit();
|
||||||
|
Console.WriteLine($"{file}: {p.ExitCode}");
|
||||||
|
}
|
||||||
|
);
|
8
nuget.config
Normal file
8
nuget.config
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<configuration>
|
||||||
|
<packageSources>
|
||||||
|
<clear />
|
||||||
|
<add key="nuget.cdn.azure.cn" value="https://nuget.cdn.azure.cn/v3/index.json" />
|
||||||
|
</packageSources>
|
||||||
|
</configuration>
|
18
packable.props
Normal file
18
packable.props
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<Project>
|
||||||
|
<PropertyGroup>
|
||||||
|
<AssemblyOriginatorKeyFile>../../key.snk</AssemblyOriginatorKeyFile>
|
||||||
|
<DelaySign>false</DelaySign>
|
||||||
|
<EmbedAllSources>true</EmbedAllSources>
|
||||||
|
<EmbedUntrackedSource>true</EmbedUntrackedSource>
|
||||||
|
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||||
|
<IncludeSymbols>true</IncludeSymbols>
|
||||||
|
<IsPackable>true</IsPackable>
|
||||||
|
<PackageIcon>logo.png</PackageIcon>
|
||||||
|
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||||
|
<PackageProjectUrl>https://github.com/nsnail/NSExt.git</PackageProjectUrl>
|
||||||
|
<PackageTags>extensions</PackageTags>
|
||||||
|
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||||
|
<SignAssembly>true</SignAssembly>
|
||||||
|
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0"/>
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0-preview-23424-02"/>
|
||||||
<PackageReference Include="xunit" Version="2.5.1-pre.20"/>
|
<PackageReference Include="xunit" Version="2.5.2-pre.2"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\NSExt\NSExt.csproj"/>
|
<ProjectReference Include="..\NSExt\NSExt.csproj"/>
|
||||||
|
@ -1,8 +1,3 @@
|
|||||||
using NSExt.Attributes;
|
|
||||||
using NSExt.Extensions;
|
|
||||||
using Xunit;
|
|
||||||
using Xunit.Abstractions;
|
|
||||||
|
|
||||||
namespace NSExt.Tests;
|
namespace NSExt.Tests;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -10,32 +5,32 @@ namespace NSExt.Tests;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class TestCase
|
public class TestCase
|
||||||
{
|
{
|
||||||
private readonly ITestOutputHelper _testOutputHelper;
|
// private readonly ITestOutputHelper _testOutputHelper;
|
||||||
|
//
|
||||||
public TestCase(ITestOutputHelper testOutputHelper)
|
// public TestCase(ITestOutputHelper testOutputHelper)
|
||||||
{
|
// {
|
||||||
_testOutputHelper = testOutputHelper;
|
// _testOutputHelper = testOutputHelper;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
public enum MyEnum1
|
// public enum MyEnum1
|
||||||
{
|
// {
|
||||||
[ResourceDescription<TestCase>(nameof(Description))]
|
// [ResourceDescription<TestCase>(nameof(Description))]
|
||||||
Online = 1
|
// Online = 1
|
||||||
|
//
|
||||||
, Offline = 2
|
// , Offline = 2
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
public static string Description { get; set; } = "123";
|
// public static string Description { get; set; } = "123";
|
||||||
|
//
|
||||||
/// <summary>
|
// /// <summary>
|
||||||
/// Case1
|
// /// Case1
|
||||||
/// </summary>
|
// /// </summary>
|
||||||
[Fact]
|
// [Fact]
|
||||||
public void Case1()
|
// public void Case1()
|
||||||
{
|
// {
|
||||||
var test = MyEnum1.Online.ResDesc<TestCase>();
|
// var test = MyEnum1.Online.ResDesc<TestCase>();
|
||||||
|
//
|
||||||
_testOutputHelper.WriteLine(test);
|
// _testOutputHelper.WriteLine(test);
|
||||||
Assert.True(test is not null);
|
// Assert.True(test is not null);
|
||||||
}
|
// }
|
||||||
}
|
}
|
@ -2,20 +2,20 @@ namespace NSExt.Constant;
|
|||||||
#pragma warning disable SYSLIB1045
|
#pragma warning disable SYSLIB1045
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 使用 RegexGenerator 新特性会生成重复key值的xmlcomment导致出错
|
/// 使用 RegexGenerator 新特性会生成重复key值的xmlComment导致出错
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static class Regexes
|
internal static class Regexes
|
||||||
{
|
{
|
||||||
public static readonly Regex RegexBacksLantUnicode
|
public static readonly Regex RegexBacksLantUnicode
|
||||||
= new("\\\\u([a-fA-F0-9]{4})", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
= new(@"\\u([a-fA-F0-9]{4})", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
public static readonly Regex RegexHtmlTag = new("<[^>]*>", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
public static readonly Regex RegexHtmlTag = new("<[^>]*>", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
public static readonly Regex RegexMobile
|
public static readonly Regex RegexMobile
|
||||||
= new("^(\\d{3})\\d{4}(\\d{4})$", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
= new(@"^(\d{3})\d{4}(\d{4})$", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
public static readonly Regex RegexPercentUnicode
|
public static readonly Regex RegexPercentUnicode
|
||||||
= new("\\\\u([a-fA-F0-9]{4})", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
= new(@"\\u([a-fA-F0-9]{4})", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
public static readonly Regex RegexUpLetter = new("([A-Z])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
public static readonly Regex RegexUpLetter = new("([A-Z])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||||
}
|
}
|
@ -7,28 +7,28 @@ namespace NSExt.Extensions;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static class LoggerExtensions
|
public static class LoggerExtensions
|
||||||
{
|
{
|
||||||
private const string _MESSAGE_S_THREADID_CALLERNAME_CALLERFILEPATH_CALLERLINENUMBER
|
private const string _MESSAGE_S_THREAD_ID_CALLER_NAME_CALLER_FILE_PATH_CALLER_LINE_NUMBER
|
||||||
= "{Message} <s:{CallerName}@{CallerFilePath}:{CallerLineNumber}>";
|
= "{Message} <s:{CallerName}@{CallerFilePath}:{CallerLineNumber}>";
|
||||||
|
|
||||||
private static readonly Action<ILogger, string, string, string, string, Exception> _logDebug
|
private static readonly Action<ILogger, string, string, string, string, Exception> _logDebug
|
||||||
= LoggerMessage.Define<string, string, string, string>(LogLevel.Debug, default
|
= LoggerMessage.Define<string, string, string, string>(LogLevel.Debug, default
|
||||||
, _MESSAGE_S_THREADID_CALLERNAME_CALLERFILEPATH_CALLERLINENUMBER);
|
, _MESSAGE_S_THREAD_ID_CALLER_NAME_CALLER_FILE_PATH_CALLER_LINE_NUMBER);
|
||||||
|
|
||||||
private static readonly Action<ILogger, string, string, string, string, Exception> _logError
|
private static readonly Action<ILogger, string, string, string, string, Exception> _logError
|
||||||
= LoggerMessage.Define<string, string, string, string>(LogLevel.Error, default
|
= LoggerMessage.Define<string, string, string, string>(LogLevel.Error, default
|
||||||
, _MESSAGE_S_THREADID_CALLERNAME_CALLERFILEPATH_CALLERLINENUMBER);
|
, _MESSAGE_S_THREAD_ID_CALLER_NAME_CALLER_FILE_PATH_CALLER_LINE_NUMBER);
|
||||||
|
|
||||||
private static readonly Action<ILogger, string, string, string, string, Exception> _logFatal
|
private static readonly Action<ILogger, string, string, string, string, Exception> _logFatal
|
||||||
= LoggerMessage.Define<string, string, string, string>(LogLevel.Critical, default
|
= LoggerMessage.Define<string, string, string, string>(LogLevel.Critical, default
|
||||||
, _MESSAGE_S_THREADID_CALLERNAME_CALLERFILEPATH_CALLERLINENUMBER);
|
, _MESSAGE_S_THREAD_ID_CALLER_NAME_CALLER_FILE_PATH_CALLER_LINE_NUMBER);
|
||||||
|
|
||||||
private static readonly Action<ILogger, string, string, string, string, Exception> _logInfo
|
private static readonly Action<ILogger, string, string, string, string, Exception> _logInfo
|
||||||
= LoggerMessage.Define<string, string, string, string>(LogLevel.Information, default
|
= LoggerMessage.Define<string, string, string, string>(LogLevel.Information, default
|
||||||
, _MESSAGE_S_THREADID_CALLERNAME_CALLERFILEPATH_CALLERLINENUMBER);
|
, _MESSAGE_S_THREAD_ID_CALLER_NAME_CALLER_FILE_PATH_CALLER_LINE_NUMBER);
|
||||||
|
|
||||||
private static readonly Action<ILogger, string, string, string, string, Exception> _logWarn
|
private static readonly Action<ILogger, string, string, string, string, Exception> _logWarn
|
||||||
= LoggerMessage.Define<string, string, string, string>(LogLevel.Warning, default
|
= LoggerMessage.Define<string, string, string, string>(LogLevel.Warning, default
|
||||||
, _MESSAGE_S_THREADID_CALLERNAME_CALLERFILEPATH_CALLERLINENUMBER);
|
, _MESSAGE_S_THREAD_ID_CALLER_NAME_CALLER_FILE_PATH_CALLER_LINE_NUMBER);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Debug
|
/// Debug
|
||||||
|
@ -476,7 +476,7 @@ public static class StringExtensions
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 蛇形命名
|
/// 蛇形命名
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Snakecase(this string me)
|
public static string SnakeCase(this string me)
|
||||||
{
|
{
|
||||||
return Regexes.RegexUpLetter.Replace(me, "-$1").ToLower(CultureInfo.InvariantCulture).TrimStart('-');
|
return Regexes.RegexUpLetter.Replace(me, "-$1").ToLower(CultureInfo.InvariantCulture).TrimStart('-');
|
||||||
}
|
}
|
||||||
|
@ -1,33 +1,8 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<Import Project="../../code.quality.props"/>
|
<Import Project="../../code.quality.props"/>
|
||||||
<PropertyGroup>
|
<Import Project="../../packable.props"/>
|
||||||
<AssemblyOriginatorKeyFile>../../key.snk</AssemblyOriginatorKeyFile>
|
|
||||||
<DelaySign>false</DelaySign>
|
|
||||||
<Description>A .NET extension function library</Description>
|
|
||||||
<EmbedAllSources>true</EmbedAllSources>
|
|
||||||
<EmbedUntrackedSource>true</EmbedUntrackedSource>
|
|
||||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
|
||||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
|
||||||
<IncludeSymbols>true</IncludeSymbols>
|
|
||||||
<IsPackable>true</IsPackable>
|
|
||||||
<PackageIcon>logo.png</PackageIcon>
|
|
||||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
|
||||||
<PackageProjectUrl>https://github.com/nsnail/ns-ext.git</PackageProjectUrl>
|
|
||||||
<PackageTags>extensions</PackageTags>
|
|
||||||
<Product>NSExt</Product>
|
|
||||||
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
|
||||||
<RepositoryType>git</RepositoryType>
|
|
||||||
<RepositoryUrl>https://github.com/nsnail/ns-ext.git</RepositoryUrl>
|
|
||||||
<SignAssembly>true</SignAssembly>
|
|
||||||
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
|
|
||||||
<Title>$(AssemblyName)</Title>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0"/>
|
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0-rc.1.23419.4"/>
|
||||||
<PackageReference Include="MinVer" Version="5.0.0-alpha.1">
|
|
||||||
<PrivateAssets>all</PrivateAssets>
|
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
||||||
</PackageReference>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="../../logo.png" Pack="true" PackagePath=""/>
|
<None Include="../../logo.png" Pack="true" PackagePath=""/>
|
||||||
|
20
sync.metafiles.csx
Normal file
20
sync.metafiles.csx
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
var slnFile = Directory.GetFiles(@"./", "*.sln").First();
|
||||||
|
var content = File.ReadAllText(slnFile);
|
||||||
|
|
||||||
|
content = Regex.Replace(
|
||||||
|
content,
|
||||||
|
"Project\\(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\"\\) = \"meta\", \"meta\", \"{5198A03D-0CAC-4828-A807-34A693F73859}\"(?:.|\n)*?EndProject",
|
||||||
|
$$"""
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "meta", "meta", "{5198A03D-0CAC-4828-A807-34A693F73859}"
|
||||||
|
{{'\t'}}ProjectSection(SolutionItems) = preProject
|
||||||
|
{{string.Join('\n',
|
||||||
|
Directory.GetFiles(@"./", "*").Where(x => !x.EndsWith(".sln") && !x.EndsWith(".user"))
|
||||||
|
.Select(x=>$"\t\t{Path.GetFileName(x)} = {Path.GetFileName(x)}")
|
||||||
|
)}}
|
||||||
|
{{'\t'}}EndProject
|
||||||
|
"""
|
||||||
|
);
|
||||||
|
Console.WriteLine(content);
|
||||||
|
File.WriteAllText(slnFile, content);
|
Loading…
x
Reference in New Issue
Block a user