Why the version was changed to 2... ?
Because it took a breaking change, just for .NET.
Are there any significant changes?
Yes - for some users. There are two breaking changes:
- The references to
System.Collections.Generic.IAsyncEnumerator<T> (from System.Interactive.Async) have been removed
- A new base class
ChannelBase has been introduced
The first of these changes is because IAsyncEnumerator<T> is now part of the standard library, but it's different to the version in System.Interactive.Async. Basically the old version of Grpc.Core / Grpc.Core.Api wouldn't play nicely with that.
The second of the changes it to provide better commonality between the pure-.NET implementation (Grpc.Net.Common etc) and the existing Google implementation (Grpc.Core).
Many users - particularly those who don't use streaming calls - will be able to just rebuild. If you do use streaming calls, and particularly if you've abstracted them via IAsyncEnumerator<T>, you may need to do a bit of work to upgrade.
It's important to note that if you're using any dependencies that in turn depend on Grpc.Core 1.x, you cannot use Grpc.Core 2.x in the same project until those dependencies have updated. (For example, all the Google Cloud client libraries currently depend on 1.x. We're planning to take a major version bump ourselves before the end of 2019 to then depend on 2.x.)
There are details in proposal L57.