diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..4011717
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,33 @@
+name: .NET Core
+
+on:
+ pull_request:
+ branches:
+ - master
+ - develop
+
+jobs:
+ build:
+
+ runs-on: windows-latest
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Setup .NET Core
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: 2.1.607
+
+ - name: Restore NuGet Packages
+ run: dotnet restore StringBuilderExtensions.sln
+
+ - name: Build with dotnet
+ run: |
+ DOTNET_CLI_TELEMETRY_OPTOUT=1
+ msbuild StringBuilderExtensions.sln /p:Configuration=Release
+
+ - name: Run Unit Tests
+ run: |
+ cd StringBuilderExtensionsTests
+ dotnet run -c Release --no-build
\ No newline at end of file
diff --git a/.github/workflows/publish_ci.yml b/.github/workflows/publish_ci.yml
new file mode 100644
index 0000000..981637d
--- /dev/null
+++ b/.github/workflows/publish_ci.yml
@@ -0,0 +1,25 @@
+name: publish to MyGet
+
+on:
+ push:
+ branches:
+ - develop
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Setup .NET Core
+ uses: actions/setup-dotnet@v1
+ - name: Build with dotnet
+ run: |
+ sed -i "s|\(.*\)|\1-ci-$GITHUB_RUN_ID|" StringBuilderExtensions\StringBuilderExtensions.csproj
+ dotnet pack --nologo --configuration Release -o nuget
+ - name: MyGet push
+ run: |
+ source=https://www.myget.org/F/xperiandri/api/v3/index.json
+ key=${{secrets.MyGet_Key}}
+ dotnet nuget push -s $source -k $key nuget/*.nupkg
diff --git a/.github/workflows/publish_release.yml b/.github/workflows/publish_release.yml
new file mode 100644
index 0000000..36c69ff
--- /dev/null
+++ b/.github/workflows/publish_release.yml
@@ -0,0 +1,32 @@
+name: publish to NuGet
+
+on:
+ push:
+ branches:
+ - master
+
+jobs:
+ publish:
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+
+ # Required for a specific dotnet version that doesn't come with ubuntu-latest / windows-latest
+ # Visit bit.ly/2synnZl to see the list of SDKs that are pre-installed with ubuntu-latest / windows-latest
+ # - name: Setup dotnet
+ # uses: actions/setup-dotnet@v1
+ # with:
+ # dotnet-version: 3.1.100
+
+ # Publish
+ - name: publish on version change
+ uses: rohith/publish-nuget@v2
+ with:
+ PROJECT_FILE_PATH: StringBuilderExtensions\StringBuilderExtensions.csproj # Relative to repository root
+ # VERSION_FILE_PATH: Directory.Build.props # Filepath with version info, relative to repository root. Defaults to project file
+ # VERSION_REGEX: (.*)<\/Version> # Regex pattern to extract version info in a capturing group
+ # TAG_COMMIT: true # Flag to enable / disalge git tagging
+ # TAG_FORMAT: v* # Format of the git tag, [*] gets replaced with version
+ NUGET_KEY: ${{secrets.NuGet_Key}}
diff --git a/.gitignore b/.gitignore
index 1bc915c..e61c116 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,34 +1,73 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
+##
+## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.suo
*.user
+*.userosscache
*.sln.docstates
-# Build results
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+# Build results
[Dd]ebug/
+[Dd]ebugPublic/
[Rr]elease/
+[Rr]eleases/
x64/
-build/
+x86/
+bld/
[Bb]in/
[Oo]bj/
+[Ll]og/
+
+# Visual Studio 2015/2017 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
-# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
-!packages/*/build/
+# Visual Studio 2017 auto generated files
+Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
+# NUNIT
+*.VisualState.xml
+TestResult.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# Benchmark Results
+BenchmarkDotNet.Artifacts/
+
+# .NET Core
+project.lock.json
+project.fragment.lock.json
+artifacts/
+**/Properties/launchSettings.json
+
+# StyleCop
+StyleCopReport.xml
+
+# Files built by Visual Studio
*_i.c
*_p.c
+*_i.h
*.ilk
*.meta
*.obj
+*.iobj
*.pch
*.pdb
+*.ipdb
*.pgc
*.pgd
*.rsp
@@ -43,21 +82,34 @@ build/
*.vssscc
.builds
*.pidb
-*.log
+*.svclog
*.scc
+# Chutzpah Test files
+_Chutzpah*
+
# Visual C++ cache files
ipch/
*.aps
*.ncb
+*.opendb
*.opensdf
*.sdf
*.cachefile
+*.VC.db
+*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
+*.sap
+
+# Visual Studio Trace Files
+*.e2e
+
+# TFS 2012 Local Workspace
+$tf/
# Guidance Automation Toolkit
*.gpState
@@ -65,6 +117,10 @@ ipch/
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# JustCode is a .NET coding add-in
+.JustCode
# TeamCity is a build add-in
_TeamCity*
@@ -72,9 +128,25 @@ _TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
+# AxoCover is a Code Coverage Tool
+.axoCover/*
+!.axoCover/settings.json
+
+# Visual Studio code coverage results
+*.coverage
+*.coveragexml
+
# NCrunch
-*.ncrunch*
+_NCrunch_*
.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
# Installshield output folder
[Ee]xpress/
@@ -93,64 +165,176 @@ DocProject/Help/html
publish/
# Publish Web Output
-*.Publish.xml
+*.[Pp]ublish.xml
+*.azurePubxml
+# Note: Comment the next line if you want to checkin your web deploy settings,
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
-# NuGet Packages Directory
-## TODO: If you have NuGet Package Restore enabled, uncomment the next line
-#packages/
+# NuGet Packages
+*.nupkg
+# The packages folder can be ignored because of Package Restore
+**/[Pp]ackages/*
+# except build/, which is used as an MSBuild target.
+!**/[Pp]ackages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/[Pp]ackages/repositories.config
+# NuGet v3's project.json files produces more ignorable files
+*.nuget.props
+*.nuget.targets
-# Windows Azure Build Output
-csx
+# Microsoft Azure Build Output
+csx/
*.build.csdef
-# Windows Store app package directory
+# Microsoft Azure Functions
+local.settings.json
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!*.[Cc]ache/
# Others
-sql/
-*.Cache
ClientBin/
-[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
-*.[Pp]ublish.xml
+*.dbproj.schemaview
+*.jfm
*.pfx
*.publishsettings
+orleans.codegen.cs
+
+# Including strong name files can present a security risk
+# (https://github.com/github/gitignore/pull/2483#issue-259490424)
+#*.snk
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
# RIA/Silverlight projects
Generated_Code/
-# Backup & report files from converting an old project file to a newer
-# Visual Studio version. Backup files are not needed, because we have git ;-)
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
+ServiceFabricBackup/
+*.rptproj.bak
# SQL Server files
-App_Data/*.mdf
-App_Data/*.ldf
+*.mdf
+*.ldf
+*.ndf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+*.rptproj.rsuser
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+node_modules/
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
+*.vbw
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# JetBrains Rider
+.idea/
+*.sln.iml
+
+# CodeRush
+.cr/
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
+
+# Cake - Uncomment if you are using it
+# tools/**
+# !tools/packages.config
+
+# Tabs Studio
+*.tss
+
+# Telerik's JustMock configuration file
+*.jmconfig
+
+# BizTalk build output
+*.btp.cs
+*.btm.cs
+*.odx.cs
+*.xsd.cs
+# OpenCover UI analysis results
+OpenCover/
-#LightSwitch generated files
-GeneratedArtifacts/
-_Pvt_Extensions/
-ModelManifest.xml
+# Azure Stream Analytics local run output
+ASALocalRun/
-# =========================
-# Windows detritus
-# =========================
+# MSBuild Binary and Structured Log
+*.binlog
-# Windows image file caches
-Thumbs.db
-ehthumbs.db
+# NVidia Nsight GPU debugger configuration file
+*.nvuser
-# Folder config file
-Desktop.ini
+# MFractors (Xamarin productivity tool) working folder
+.mfractor/
-# Recycle Bin used on file shares
-$RECYCLE.BIN/
+# Orchard Core
+**/wwwroot/is-cache
+**/App_Data
+**/Localization/**/*.po
-# Mac desktop service store files
-.DS_Store
+# Xamarin Android
+**Android/Resources/Resource.designer.cs
diff --git a/StringBuilderExtensions.sln b/StringBuilderExtensions.sln
index c848013..6c3489d 100644
--- a/StringBuilderExtensions.sln
+++ b/StringBuilderExtensions.sln
@@ -1,9 +1,24 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2012
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StringBuilderExtensions", "StringBuilderExtensions\StringBuilderExtensions.csproj", "{01E836D1-40BF-49FA-9EE6-65EBB2F76650}"
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29924.181
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StringBuilderExtensions", "StringBuilderExtensions\StringBuilderExtensions.csproj", "{01E836D1-40BF-49FA-9EE6-65EBB2F76650}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StringBuilderExtensionsTests", "StringBuilderExtensionsTests\StringBuilderExtensionsTests.csproj", "{054701DF-D8ED-434F-B708-075861F611D2}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StringBuilderExtensionsTests", "StringBuilderExtensionsTests\StringBuilderExtensionsTests.csproj", "{054701DF-D8ED-434F-B708-075861F611D2}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{407C25AD-A79E-442D-A1EF-8ED289439CC0}"
+ ProjectSection(SolutionItems) = preProject
+ license.md = license.md
+ readme.md = readme.md
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "GitHub", "GitHub", "{7E7071CA-1460-450E-AFA2-4134C15080CA}"
+ ProjectSection(SolutionItems) = preProject
+ .github\workflows\build.yml = .github\workflows\build.yml
+ .github\workflows\publish_ci.yml = .github\workflows\publish_ci.yml
+ .github\workflows\publish_release.yml = .github\workflows\publish_release.yml
+ EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -23,6 +38,9 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {92E327E4-BB79-41E9-88DE-65B35B27DE11}
+ EndGlobalSection
GlobalSection(CodealikeProperties) = postSolution
SolutionGuid = 5cf8613c-3894-430a-b76a-6b74315e9732
EndGlobalSection
diff --git a/StringBuilderExtensions/Properties/AssemblyInfo.cs b/StringBuilderExtensions/Properties/AssemblyInfo.cs
deleted file mode 100644
index 1cb4344..0000000
--- a/StringBuilderExtensions/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using System.Resources;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("StringBuilderExtensions")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("StringBuilderExtensions")]
-[assembly: AssemblyCopyright("Copyright © 2013")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-[assembly: NeutralResourcesLanguage("en")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/StringBuilderExtensions/StringBuilderExtensions.csproj b/StringBuilderExtensions/StringBuilderExtensions.csproj
index 9cf20b1..8b7042e 100644
--- a/StringBuilderExtensions/StringBuilderExtensions.csproj
+++ b/StringBuilderExtensions/StringBuilderExtensions.csproj
@@ -1,27 +1,31 @@
-
-
+
- 10.0
- Debug
- AnyCPU
- {01E836D1-40BF-49FA-9EE6-65EBB2F76650}
Library
- Properties
System.Text
XperiAndri.StringBuilderExtensions
- v4.0
- Profile1
- 512
- {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ XperiAndri StringBuilder Extensions
+ netstandard2.0
1
+ true
+
+
+ Extension methods for System.Text.StringBuilder.
+ Extension method for System.Text.StringBuilder which add functionality similar to System.String.
+ Copyright © XperiAndri 2020
+ XperiAndri
+ XperiAndri.StringBuilderExtensions
+ 1.0.0
+ XperiAndri
+ XperiAndri.StringBuilderExtensions
+ StringBuilder;String
+ git
+ https://github.com/xperiandri/StringBuilderExtensions
true
full
false
- bin\Debug\
- DEBUG;TRACE
prompt
4
True
@@ -53,7 +57,7 @@
- True
+ False
False
Full
DoNotBuild
@@ -62,8 +66,6 @@
pdbonly
true
- bin\Release\
- TRACE
prompt
4
True
@@ -95,30 +97,20 @@
- True
+ False
False
Full
DoNotBuild
0
-
-
-
-
-
- ..\..\..\..\..\Program Files (x86)\Microsoft\Contracts\Contracts\Silverlight\v4.0\Profile\WindowsPhone\Microsoft.Contracts.dll
-
+
-
+
+
+ all
+ runtime; build; native; contentfiles; analyzers
+
-
-
\ No newline at end of file
diff --git a/StringBuilderExtensionsTests/Properties/AssemblyInfo.cs b/StringBuilderExtensionsTests/Properties/AssemblyInfo.cs
deleted file mode 100644
index e74c153..0000000
--- a/StringBuilderExtensionsTests/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("StringBuilderExtensionsTests")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("StringBuilderExtensionsTests")]
-[assembly: AssemblyCopyright("Copyright © 2014")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("59baefe3-0730-483d-9e2f-33ea96f2b770")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/StringBuilderExtensionsTests/StringBuilderExtensionsTests.csproj b/StringBuilderExtensionsTests/StringBuilderExtensionsTests.csproj
index 0926447..b60668f 100644
--- a/StringBuilderExtensionsTests/StringBuilderExtensionsTests.csproj
+++ b/StringBuilderExtensionsTests/StringBuilderExtensionsTests.csproj
@@ -1,101 +1,22 @@
-
+
- Debug
- AnyCPU
- {054701DF-D8ED-434F-B708-075861F611D2}
Library
- Properties
- StringBuilderExtensionsTests
- StringBuilderExtensionsTests
- v4.5
- 512
- {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- 10.0
- $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
- $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages
- False
- UnitTest
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
+ StringBuilderExtensions.Tests
+ StringBuilderExtensions.Tests
+ netcoreapp2.1
+ false
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
- {01e836d1-40bf-49fa-9ee6-65ebb2f76650}
- StringBuilderExtensions
-
+
-
-
-
-
- False
-
-
- False
-
-
- False
-
-
- False
-
-
-
-
-
-
-
\ No newline at end of file