Apache Ignite.NET Build Instructions (Windows)
==============================================

Requirements:
* Windows (XP and up), Windows Server (2008 and up)
* Oracle JDK 8 and above
* .NET Framework 4.0
* .NET Core 2.0+
* PowerShell 3.0+
* Visual Studio 2010+
* JAVA_HOME environment variable set to the corresponding JDK (x64 or x86)
* Apache Maven bin directory in PATH, or MAVEN_HOME environment variable

Building binaries:
  build.bat -skipCodeAnalysis
Resulting binaries will be in bin folder, and NuGet packages in nupkg folder.

Running built binaries: resulting "bin" folder is self contained, you can copy it anywhere and run
  bin\Apache.Ignite.exe

Running examples and Apache.Ignite.exe from project directories:
  Set IGNITE_NATIVE_TEST_CLASSPATH environment variable to "true"


Cross-Platform Support
======================

Main Apache.Ignite.sln solution targets .NET 4.0 & VS 2010: we care for backwards compatibility.

However, this does not prevent us from supporting .NET Standard 2.0 and .NET Core 2.0,
because of ".NET Framework compatibility mode", which allows referencing any libraries
from .NET Core 2.0 projects. So we release binaries which target .NET 4.0, and they work
both with .NET 4.0+ and .NET Core 2.0+.


Cross-Platform Development with .NET Core (Linux, macOS)
========================================

Ignite.NET can be built, developed, and tested with .NET Core on Linux and macOS, but only partially.
A subset of functionality and tests is available. See Apache.Ignite.DotNetCore.sln.

Requirements:
* .NET Core SDK (2.1+): https://www.microsoft.com/net/download/linux
* JDK 8+: apt install openjdk-8-jdk
* Maven: apt install maven
* IDE: Not required. Rider or VSCode works.

Getting started:
* Build Java and .NET:
  ./build.sh
* Run tests:
  cd Apache.Ignite.Core.Tests
  dotnet test Apache.Ignite.Core.Tests.DotNetCore.csproj
* Run specific test:
  dotnet test Apache.Ignite.Core.Tests.DotNetCore.csproj --filter CacheTest
* IDE: Open Apache.Ignite.DotNetCore.sln


Cross-Platform Development with Mono (Linux, macOS)
========================================

Full Ignite.NET solution can be built, developed, and tested with Mono.

Requirements:
* Mono: http://www.mono-project.com/download/ (6.x may not work due to https://github.com/mono/mono/issues/18418)
* NuGet: apt install nuget
* JDK 8+: apt install openjdk-8-jdk
* Maven: apt install maven
* PowerShell Core: https://github.com/PowerShell/PowerShell
* IDE: Not required.

Getting started:
* Build Java and .NET:
  pwsh ./build.ps1 -skipDotNetCore
* Run tests:
  mono Apache.Ignite.Core.Tests/bin/Debug/Apache.Ignite.Core.Tests.exe -basicTests
