EWSoftware / PDI

A Personal Data Interchange (PDI) library that implements the vCard (RFC 2426), vCalendar, and iCalendar (RFC 2445) specifications including recurrence pattern generation
Microsoft Public License
64 stars 26 forks source link

Build for .NET Standard 2.0 #7

Closed dahall closed 5 years ago

dahall commented 6 years ago

Would you be open to converting the EWSPDI library to the new csproj format that will build against multiple framework versions including .NET Std 2.0? I have done this for a few projects and am willing to do the conversion, any refactoring, and submit it all as a PR. For an example, see my Task Scheduler project. I really like this library and am considering using it for a major overhaul of that afore mentioned project.

EWSoftware commented 6 years ago

Yes, I'd consider it.

dahall commented 6 years ago

As I've pulled the code now and spent a little time with it, there are two things about upgrading that you should know before I proceed:

  1. Upgrading the project will make it only work under VS 2017 (15.5) and later (build and edit).
  2. NuGet builds are included in the project build. The nuspec files and separate build go away.

Are you okay with both of the above before I get started? The reason I'm asking is that this could take many hours and I'd rather not start if it won't get merged.

EWSoftware commented 6 years ago

I'd prefer you create a separate solution and project rather than replace those that currently exist. I'm sure there are a lot of people that still use prior versions of .NET and Visual Studio and I'd rather not shut them out. I don't use .NET Standard either and not being familiar with the project structure yet don't want to commit fully to it just yet.

Perhaps a separate branch is more appropriate where the changes can be kept isolated.

dahall commented 6 years ago

I forked the project and made the changes in such a way as to be able to sync with your master. Unfortunately, this model, while functional for my needs, makes updating my fork very manual and means that your other consumers only get a .NET 4.0 option. In my instance, the NuGet packages for PDI and PDI.Data have .NET 3.5, 4.0, 4.5 and Standard 2.0 builds embedded so they can work with a broader array of project types. If you ever want to merge, let me know and I'll be sure to sync first. My fork is at https://github.com/dahall/PDI. If you have any clever ideas for how to reformulate the fork so you could merge and not alienate older platforms, let me know. I'm happy to reconfigure.

EWSoftware commented 5 years ago

It's taken me a while but I finally got around to researching .NET Standard and finding out what it's all about. I do see the benefits now and will be working on switching the project formats over soon. I've created a Legacy branch to contain a copy of the project as it exists now with the standard MSBuild projects for use with VS 2010 though 2017 15.4.

All future development on the master branch will use the new project format that targets .NET 3.5 and later and .NET Standard 2.0.