Jedna z naszych bibliotek klas wykorzystuje typy przestrzenne firmy Microsoft, takie jak DbGeography. Uruchamiając naszą aplikację na czystym komputerze bez starszych wersjach SQL Server i Visual Studio, możemy uzyskać ten wyjątek:Jak korzystać z SqlServer.Types/typów przestrzennych w aplikacji ASP.NET Core 1.0
typy przestrzenne i funkcje nie są dostępne dla tego dostawcę ponieważ montażowych Microsoft.SqlServer.Types " wersja 10 lub nowsza nie została znaleziona.
Rozwiązaniem jest najwyraźniej zainstalować ten pakiet Nuget:
Install-Package Microsoft.SqlServer.Types
Po zainstalowaniu pakietu Nuget daje instrukcje, jak odwołać się do biblioteki DLL z każdego typu projektu:
wdrożyć aplikacja korzystająca z typów danych przestrzennych na komputerze, który nie ma zainstalowanych "Systemowych typów CLR dla SQL Server", należy również wdrożyć natywny zespół SqlServerSpatial110.dll.
Obie wersje x86 (32-bit) i x64 (64-bitowe) tego zespołu zostały dodane do projektu w podkatalogach SqlServerTypes \ x86 i SqlServerTypes \ x64. Macierzysty assembler msvcr100.dll znajduje się również w przypadku, gdy środowisko wykonawcze C++ nie jest zainstalowane.
Musisz dodać kod, aby załadować prawidłowy jeden z tych zespołów w czasie wykonywania (w zależności od aktualnej architektury).
aplikacje ASP.NET przypadku aplikacji ASP.NET, dodaj następującą linię kodu metody Application_Start w Global.asax.cs: SqlServerTypes.Utilities.LoadNativeAssemblies (Server.MapPath ("~/bin")) ;
Aplikacje desktopowe dla aplikacji desktopowych, należy dodać następujący wiersz kodu do uruchomienia zanim jakiekolwiek operacje wykonywane są przestrzenne: SqlServerTypes.Utilities.LoadNativeAssemblies (AppDomain.CurrentDomain.BaseDirectory);
Nuget stronę projektu pakiet nie odpowiada, więc nie jestem pewien, że to jest najlepsze podejście obecnie w użyciu w 2016 roku
mój problem jest, nie mogę dowiedzieć się, jak zadzwonić LoadNativeAssemblies od aplikacja ASP.NET Core 1.0. Korzystamy z pełnej struktury (net461), a nie z podstawowej struktury.
public class Startup
{
public Startup(IHostingEnvironment env)
{
...
SqlServerTypes.Utilities.LoadNativeAssemblies(env.WebRootPath);
...
}
}
Jaki jest najlepszy sposób, aby obejmować SqlServer.Types dll w ramach jednej aplikacji ASP.NET 1.0?
Podobne pytania here i here na StackOverflow.
Wielkie dzięki.
Dostałeś nigdzie z tym –
żadnego postępu w ogóle mam jeszcze nadzieję zrozumieć to ... – Ender2050
Z ciekawości, co się dzieje, kiedy don” t do tej linii? W moim projekcie .NET Framework nie musiałem ręcznie ładować zespołów i działało poprawnie.Nie udało mi się uruchomić go na .NET Core, ale ze względu na inne problemy ze zgodnością. –