This issue will track the CRAWL phase of Orleans 2.X milestone as tracked by #2143
The idea with this task is to basically make Orleans Core compatible with .Net Core, by having it target .Net Standard and have the minimal impact as possible in the current codebase.
Since .Net Core tooling still unreliable and will (drastically) change before it reach RTM, we are following the guidelines from here and in a new temporary solution we will work at master branch.
The target is to have Orleans building and running on .Net Full CLR and .Net Core (hence why target .Net Standard) on Windows and have the full test set only for the .Net Full CLR (.Net 4.6.1+) while having basic validation on .Net Core on Windows.
We will focus on Windows as a baseline but that doesn't mean people can't run tests on Linux/OSX once this work is done. That means that the core test set will focus on .Net Full CLR and basic .Net Core on Windows but you can test your Orleans application on .Net Core supported OSes. The test framework should stay as is. That means the major efforts will not be to update the test kit to multiple OSes and full .Net Core coverage but, if you feel comfortable, we still accept (and really encourage and appreciate!) PRs however, it will take lower priority (and of course efforts on review) from the core team and people from the community working on this port.
Here are the macro tasks and its issues that will be tracked for this phase:
Add new solution targeting .Net Standard Library 1.5 (netstandard15) - #2177
Build Orleans.vNext.sln in the CI Build.cmd script - #2353 #2362
Replace Binary Serializer - #2162
Move Performance Counters to its own TelemetryConsumer - #2122
Use supported overloads from Socket class - #2195
Remove usage of named mutexes #2366
Remove AppDomain usage for assembly loading/scanning - #2025 and in continued progress by @attilah
Run non-silo tests (not blocked by Silo not working in memory) - in progress by @xiazen
Avoid Silo being MarshalByRefObject but support running tests - #2196
Avoid test hooks being MarshalByRefObject (a few still pending) - #2333
Avoid usages of CallContext - #2197
Run all silo tests that do not use extensibility features (such as external storage providers)
Add storage providers with tests (all implementations that support .net standard out of the box)
Add stream providers with tests (all implementations that support .net standard out of the box)
Extract client implementation from main Orleans.dll (with should have the minimal abstractions)
Migrate off the MSBuild hack for building .NET Standard once new tooling is available
Support codegen in the final tooling
Remove all NETSTANDARD_TODO comments by implementing workarounds
Clean up: Remove all NETSTANDARD comments by moving platform specific components to platform specific DLLs
Design our desired 2.0 nuget package structure (IDs and contents)
Full test set passing on .Net Framework 4.6.2 (net462)
Basic validation tests on .Net Core 1.0 (netcoreapp10)
Note: This list will be updated as new sub-tasks (issues and/or PRs) will emerge from this work.
This issue will track the CRAWL phase of Orleans 2.X milestone as tracked by #2143 The idea with this task is to basically make Orleans Core compatible with .Net Core, by having it target .Net Standard and have the minimal impact as possible in the current codebase. Since .Net Core tooling still unreliable and will (drastically) change before it reach RTM, we are following the guidelines from here and in a new temporary solution we will work at master branch. The target is to have Orleans building and running on .Net Full CLR and .Net Core (hence why target .Net Standard) on Windows and have the full test set only for the .Net Full CLR (.Net 4.6.1+) while having basic validation on .Net Core on Windows. We will focus on Windows as a baseline but that doesn't mean people can't run tests on Linux/OSX once this work is done. That means that the core test set will focus on .Net Full CLR and basic .Net Core on Windows but you can test your Orleans application on .Net Core supported OSes. The test framework should stay as is. That means the major efforts will not be to update the test kit to multiple OSes and full .Net Core coverage but, if you feel comfortable, we still accept (and really encourage and appreciate!) PRs however, it will take lower priority (and of course efforts on review) from the core team and people from the community working on this port. Here are the macro tasks and its issues that will be tracked for this phase:
Add new solution targeting .Net Standard Library 1.5 (netstandard15) - #2177
Build Orleans.vNext.sln in the CI Build.cmd script - #2353 #2362
Replace Binary Serializer - #2162
Move Performance Counters to its own TelemetryConsumer - #2122
Use supported overloads from Socket class - #2195
Remove usage of named mutexes #2366
Remove AppDomain usage for assembly loading/scanning - #2025 and in continued progress by @attilah
Run non-silo tests (not blocked by Silo not working in memory) - in progress by @xiazen
Avoid Silo being MarshalByRefObject but support running tests - #2196
Avoid test hooks being MarshalByRefObject (a few still pending) - #2333
Avoid usages of CallContext - #2197
Run all silo tests that do not use extensibility features (such as external storage providers)
Add storage providers with tests (all implementations that support .net standard out of the box)
Add stream providers with tests (all implementations that support .net standard out of the box)
Extract client implementation from main Orleans.dll (with should have the minimal abstractions)
Migrate off the MSBuild hack for building .NET Standard once new tooling is available
Support codegen in the final tooling
Remove all NETSTANDARD_TODO comments by implementing workarounds
Clean up: Remove all NETSTANDARD comments by moving platform specific components to platform specific DLLs
Design our desired 2.0 nuget package structure (IDs and contents)
Restructure vNext projects to recreate our expected 2.0 nuget packages output structure
Full test set passing on .Net Framework 4.6.2 (net462)
Basic validation tests on .Net Core 1.0 (netcoreapp10) Note: This list will be updated as new sub-tasks (issues and/or PRs) will emerge from this work.