tree a20952fa93374e362ca57dcda15a3c4fc61e10ac
parent 9b45afbbc52977fc0c5a820c2eb2fb7276335822
author Jon Skeet <jonskeet@google.com> 1467985119 +0100
committer Jon Skeet <jonskeet@google.com> 1468562994 +0100

Overhaul how the native extension is found, loaded and used

The goal of this is to fix #7230.

The changes here are:

- The layout in the nuget package; the files are now in
  `/runtimes/{os}/native/{library}`
- The filename of each library, which now includes the architecture,
  e.g `grpc_csharp_ext.x64.dll`
- The targets file used to copy those files in msbuild-based projects;
  note that we now don't build up a folder structure.
- The way the functions are found

Before this change, on Linux and OSX we used to find library symbols
manually, and use DllImport on Windows. With this change, the name
of the library file changes based on architecture, so `DllImport`
doesn't work. Instead, we have to use `GetProcAddress` to fetch the
function. This is further convoluted by the convention on
Windows-x86 to prefix the function name with `_` and suffix it based
on the stack size of the arguments. We can't easily tell the
argument size here, so we just try 0, 4, 8...128. (128 bytes should
be enough for anyone.) This is inefficient, but it's a one-time hit
with a known number of functions, and doesn't seem to have any
significant impact.

The benefit of this in code is we don't need the DllImports any
more, and we don't need to conditionally use `FindSymbol` - we just
use it for everything, so things are rather more uniform and tidy.

The further benefit of this is that the library name is no longer
tied to a particular filename format - so if someone wanted to have
a directory with the libraries for every version in, with the
version in the filename, we'd handle that just fine. (At least once

Testing:

- Windows:
  - Console app under msbuild, dotnet cli and DNX
  - ASP.NET Classic under msbuild
  - ASP.NET Core (still running under net451)
- Ubuntu 16.04
  - Console app under dotnet cli, run with dotnet run and mono
- OSX:
  - Console app under dotnet cli, run with dotnet run and mono

Under dotnet cli, a dependency on `Microsoft.NETCore.Platforms` is
required in order to force the libraries to be copied.

This change does *not* further enable .NET Core. It attempts to
keep the existing experimental .NET Core project files in line
with the msbuild files, but I expect further work to be required
for .NET Core, which has a different build/publication model.
