问题
I'm attempting to convert all of our C# class libraries from .NET Framework to .NET Standard projects, as we are starting to leverage .NET Core so need these to be consumable by both .NET Core and .NET Framework apps (with the latter being ported over to Core in the upcoming months.)
I'm having trouble converting our data access layer code, because we leverage Microsoft.SqlServer.Types extensively and the official nuget package doesn't support .NET Standard. I tried an unofficial nuget package by dotmorten but it's missing a lot of functionality. Below is a list of everything missing that we would need (thrown together to get the code building...)
public static class SqlMockExtensions
{
public static SqlBytes STAsBinary(this SqlGeography geography) => throw new NotImplementedException();
public static SqlGeography MakeValid(this SqlGeography geography) => throw new NotImplementedException();
public static int STDimension(this SqlGeography geography) => throw new NotImplementedException();
public static bool STIsValid(this SqlGeography geography) => throw new NotImplementedException();
public static Nullable<double> EnvelopeAngle(this SqlGeography geography) => throw new NotImplementedException();
public static SqlGeography ReorientObject(this SqlGeography geography) => throw new NotImplementedException();
public static SqlGeography BufferWithTolerance(this SqlGeography geography, double arg1, int arg2, bool arg3) => throw new NotImplementedException();
public static SqlGeography Reduce(this SqlGeography geography, double tolerance) => throw new NotImplementedException();
public static SqlGeography EnvelopeCenter(this SqlGeography geography) => throw new NotImplementedException();
public static double STDistance(this SqlGeography geography, SqlGeography point2) => throw new NotImplementedException();
public static SqlBytes STAsBinary(this SqlGeometry geometry) => throw new NotImplementedException();
}
When I search SO for others trying to integrate Microsoft.SqlServer.Types into their .NET Core and Standard projects, I see mentions of including the official nuget package and then doing something like this:
SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
However, it errors when you try to add a non-.NET Standard compliant nuget package into a .NET Standard project, so I'm not clear how this is a solution.
This seems like a very common problem to have, there have to be a lot of developers out there who leverage Microsoft.SqlServer.Types for SqlGeography, SqlGeometry, etc... and are porting over to .NET Standard. So how are all of you accomplishing this?
来源:https://stackoverflow.com/questions/54448139/microsoft-sqlserver-types-incompatible-with-net-standard