diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..94f37cc
--- /dev/null
+++ b/.github/CODE_OF_CONDUCT.md
@@ -0,0 +1,76 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as
+contributors and maintainers pledge to making participation in our project and
+our community a harassment-free experience for everyone, regardless of age, body
+size, disability, ethnicity, sex characteristics, gender identity and expression,
+level of experience, education, socio-economic status, nationality, personal
+appearance, race, religion, or sexual identity and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment
+include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or
+ advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic
+ address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable
+behavior and are expected to take appropriate and fair corrective action in
+response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct, or to ban temporarily or
+permanently any contributor for other behaviors that they deem inappropriate,
+threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community. Examples of
+representing a project or community include using an official project e-mail
+address, posting via an official social media account, or acting as an appointed
+representative at an online or offline event. Representation of a project may be
+further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by contacting the project team at kasthack@epicm.org. All
+complaints will be reviewed and investigated and will result in a response that
+is deemed necessary and appropriate to the circumstances. The project team is
+obligated to maintain confidentiality with regard to the reporter of an incident.
+Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good
+faith may face temporary or permanent repercussions as determined by other
+members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
+available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
+
+[homepage]: https://www.contributor-covenant.org
+
+For answers to common questions about this code of conduct, see
+https://www.contributor-covenant.org/faq
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 0000000..9ec8d24
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: #kasthack
+patreon: kasthack # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000..dd84ea7
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,38 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To Reproduce**
+Steps to reproduce the behavior:
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Screenshots**
+If applicable, add screenshots to help explain your problem.
+
+**Desktop (please complete the following information):**
+ - OS: [e.g. iOS]
+ - Browser [e.g. chrome, safari]
+ - Version [e.g. 22]
+
+**Smartphone (please complete the following information):**
+ - Device: [e.g. iPhone6]
+ - OS: [e.g. iOS8.1]
+ - Browser [e.g. stock browser, safari]
+ - Version [e.g. 22]
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000..bbcbbe7
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,20 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/build-and-deploy.yml
new file mode 100644
index 0000000..fa29b07
--- /dev/null
+++ b/.github/workflows/build-and-deploy.yml
@@ -0,0 +1,70 @@
+name: Build and Deploy
+
+on:
+ push:
+ branches: [ master, develop ]
+ pull_request:
+ branches: [ master, develop ]
+
+defaults:
+ run:
+ working-directory: src
+
+jobs:
+ build:
+ runs-on: windows-latest
+ env:
+ DOTNET_NOLOGO: true
+ DOTNET_CLI_TELEMETRY_OPTOUT: true
+ DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
+
+ strategy:
+ matrix:
+ configuration: [Debug, Release]
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+
+ - name: Setup .NET
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: 8
+
+ - name: Install dotnet-script
+ run: dotnet tool install --global dotnet-script
+ shell: pwsh
+
+ - name: Update version in project
+ run: dotnet script "${{ github.workspace }}/UpdateVersion.csx"
+ env:
+ GITHUB_RUN_NUMBER: ${{ github.run_number }}
+ shell: pwsh
+
+ - name: Restore dependencies in project
+ run: dotnet restore
+
+ - name: Build project
+ run: dotnet build --configuration ${{ matrix.configuration }} --verbosity minimal
+
+ - name: Pack NuGet package [Debug]
+ if: matrix.configuration == 'Debug'
+ run: dotnet pack --configuration Debug --output ./nupkg
+
+ - name: Pack NuGet package [Release]
+ if: matrix.configuration == 'Release'
+ run: dotnet pack --configuration Release --output ./nupkg
+
+ - name: Push NuGet package
+ if: matrix.configuration == 'Release'
+ run: dotnet nuget push ./nupkg/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json
+
+ - name: Create GitHub Release
+ if: matrix.configuration == 'Release'
+ uses: softprops/action-gh-release@v2
+ with:
+ tag_name: ${{ env.new_version }}
+ name: ${{ env.new_version }}
+ files: ./nupkg/*.nupkg
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/LICENSE b/LICENSE.md
similarity index 100%
rename from LICENSE
rename to LICENSE.md
diff --git a/UpdateVersion.csx b/UpdateVersion.csx
new file mode 100644
index 0000000..17e3f67
--- /dev/null
+++ b/UpdateVersion.csx
@@ -0,0 +1,31 @@
+////////////////////////////////////////////////////////////
+//
+// This is META-file for using in CI system.
+// STAM, EpicMorg
+////////////////////////////////////////////////////////////
+
+#r "nuget: System.Xml.ReaderWriter"
+
+using System;
+using System.IO;
+using System.Xml;
+
+var versionFilePath = "kasthack.binding.wf.csproj";
+var xmlDoc = new XmlDocument();
+xmlDoc.Load(versionFilePath);
+
+var versionNode = xmlDoc.SelectSingleNode("//Version");
+var currentVersion = versionNode.InnerText;
+
+Console.WriteLine($"Current version is: {currentVersion}");
+
+var buildNumber = Environment.GetEnvironmentVariable("GITHUB_RUN_NUMBER");
+var newVersion = $"{currentVersion.Split('.')[0]}.{currentVersion.Split('.')[1]}.{buildNumber}";
+
+versionNode.InnerText = newVersion;
+var assemblyVersionNode = xmlDoc.SelectSingleNode("//AssemblyVersion");
+assemblyVersionNode.InnerText = $"{newVersion}.0";
+
+xmlDoc.Save(versionFilePath);
+
+Console.WriteLine($"Updated version to: {newVersion}");
diff --git a/appveyor.yml b/appveyor.yml
deleted file mode 100644
index 6d00617..0000000
--- a/appveyor.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-version: 1.2.{build}
-image: Visual Studio 2017
-before_build:
-- ps: dotnet restore
-configuration:
- - Debug
- - Release
-build:
- publish_nuget: true
- verbosity: minimal
-dotnet_csproj:
- patch: true
- file: '**\*.csproj'
- version: $(appveyor_build_version)
-deploy:
-- provider: NuGet
- api_key:
- secure: 1TRtLMdrz0Uw+6VWQBSUG49Wf6zlHRzMk0FfIRDdw9+4ciMeAkDKcswpI8aAMbxc
- on:
- branch: master
- configuration: Release
diff --git a/readme.md b/readme.md
index 375276a..4a4b75d 100644
--- a/readme.md
+++ b/readme.md
@@ -1,19 +1,30 @@
# kasthack.binding.wf
-[![Nuget](https://img.shields.io/nuget/v/kasthack.binding.wf.svg)](https://www.nuget.org/packages/kasthack.binding.wf/)
-[![NuGet](https://img.shields.io/nuget/dt/kasthack.binding.wf.svg)](https://www.nuget.org/packages/kasthack.binding.wf/)
-[![Build status](https://img.shields.io/appveyor/ci/kasthack/kasthack-binding-wf.svg)](https://ci.appveyor.com/project/kasthack/kasthack-binding-wf)
-[![license](https://img.shields.io/github/license/kasthack/kasthack.binding.wf.svg)](LICENSE)
-[![Gitter](https://img.shields.io/gitter/room/nwjs/nw.js.svg)](https://gitter.im/kasthack_binding_wf)
+[![NuGet Version](https://img.shields.io/nuget/v/kasthack.binding.wf?style=flat-square&link=https%3A%2F%2Fwww.nuget.org%2Fpackages%2Fkasthack.binding.wf)](https://www.nuget.org/packages/kasthack.binding.wf/)
+[![NuGet Downloads](https://img.shields.io/nuget/dt/kasthack.binding.wf?style=flat-square&link=https%3A%2F%2Fwww.nuget.org%2Fpackages%2Fkasthack.binding.wf)](https://www.nuget.org/packages/kasthack.binding.wf/)
+[![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/kasthack-labs/kasthack.binding.wf/build-and-deploy.yml?style=flat-square&link=https%3A%2F%2Fgithub.com%2Fkasthack-labs%2Fkasthack.binding.wf%2Factions%2Fworkflows%2Fbuild-and-deploy.yml)](https://github.com/kasthack-labs/kasthack.binding.wf/actions/workflows/build-and-deploy.yml)
+[![GitHub License](https://img.shields.io/github/license/kasthack-labs/kasthack.binding.wf?style=flat-square&link=LICENSE.md)](LICENSE.md)
+[![GitHub repo size](https://img.shields.io/github/repo-size/kasthack-labs/kasthack.binding.wf?style=flat-square&link=https%3A%2F%2Fgithub.com%2Fkasthack-labs%2F)](https://github.com/kasthack-labs/)
+[![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/kasthack-labs/kasthack.binding.wf/total?style=flat-square&link=https%3A%2F%2Fgithub.com%2Fkasthack-labs%2Fkasthack.binding.wf%2Freleases)](https://github.com/kasthack-labs/releases)
-## What
+## About
-Windows.Forms data binding lambda helper. Gets rid of that literal / nameof bullshit in your code.
+Windows.Forms data binding lambda helper. Gets rid of that literal / nameof in your code.
## Installation
+### CLI
+
`Install-Package kasthack.binding.wf`
+### dotNet 5+
+
+`dotnet add package kasthack.binding.wf`
+
+### Direct in project via PackageReference
+
+``
+
## Usage
`control.Bind(a=>a.ControlProperty, model, a=>a.ModelProperty.ModelSubProperty)`
diff --git a/LambaBinder.cs b/src/LambaBinder.cs
similarity index 100%
rename from LambaBinder.cs
rename to src/LambaBinder.cs
diff --git a/kasthack.binding.wf.csproj b/src/kasthack.binding.wf.csproj
similarity index 70%
rename from kasthack.binding.wf.csproj
rename to src/kasthack.binding.wf.csproj
index 9aca4b5..bb4e3f0 100644
--- a/kasthack.binding.wf.csproj
+++ b/src/kasthack.binding.wf.csproj
@@ -4,19 +4,28 @@
true
true
true
- net40;net45;net451;net452;net46;net461;net462;net47
+ net40;net45;net451;net452;net46;net461;net462;net47;net471;net472;net48;net48;net481;net5.0-windows;net6.0-windows;net7.0-windows;net8.0-windows
kasthack.binding.wf
Windows.Forms data binding lambda helper. Gets rid of that literal / nameof bullshit in your code.
false
kasthack databinding lambda winforms binding windows forms
- https://github.com/kasthack/kasthack.binding.wf/blob/master/LICENSE.txt
http://github.com/kasthack/kasthack.binding.wf
true
- 1.2.1
- 1.2.1.0
+ true
+ 1.3.0
+ 1.3.0.0
+
+
+ LICENSE.md
+
+
+
+
+
+