Консольное приложение .NET 6: не удалось загрузить пространственную библиотеку SQL ServerC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Консольное приложение .NET 6: не удалось загрузить пространственную библиотеку SQL Server

Сообщение Anonymous »


У меня есть готовое консольное приложение .NET 6, основанное на новом шаблоне проекта, в которое я добавил пакет nuget Microsoft.SqlServer.Types версии 160.1000.6< /код>.

Я получаю следующую ошибку:

Необработанное исключение. System.IO.FileNotFoundException: не удалось загрузить пространственную библиотеку SQL Server. Код ошибки: 126 (HResult: 0x80131524).

в Microsoft.SqlServer.Types.GLNativeMethods.ThowIfGLNativeLibraryNotLoaded()
в Microsoft.SqlServer.Types.GLNativeMethods.IsValid(GeoData g)
в Microsoft.SqlServer.Types.SqlGeometry.IsValidExpensive()
в Microsoft.SqlServer.Types.SqlGeometry..ctor(GeoData g, Int32 srid)
в Microsoft.SqlServer.Types.SqlGeometry.Construct(GeoData g, Int32 srid)
в Microsoft.SqlServer.Types.SqlGeometry.GeometryFromBinary (тип OpenGisType, двоичный файл SqlBytes, Int32 srid)
в Microsoft.SqlServer.Types.SqlGeometry.STGeomFromWKB(SqlBytes wkbGeometry, Int32 srid)
в geometry_tester.Program.Main(String[] args) в C:\Users\me\source\repos\geometry-tester\Program.cs:line 31

Мой исходный код:

попробуй { объект objectValue = DBNull.Value; byte[] bytes = Convert.FromBase64String("AQMAAAAAAAACwAAAAAAAAADqllrAAAAAQHueOEAAAADAZIVawAAAAAKDbwjhAAAAAAOF4WsAAAAAgE285QAAAAADnjFrAAAAAAFYaOkAAAAAA6pZawAAAAEBEPjpAAAAAwHnLWsAAAABARD46QAAAAEB70F raAAAAAFYaOkAAAABAe9BawaAAAACATbzlAAAAAwHnLWsAAAACgvC85QAAAAADwqlrAAAAAoNvCOEAAAAAA6pZawaAAAAEB7njha"); objectValue = (объект)SqlGeometry.STGeomFromWKB(новый System.Data.SqlTypes.SqlBytes(bytes), 4326).MakeValid(); Console.WriteLine($"Преобразованный вывод: {((SqlGeometry)objectValue).ToString()}"); } поймать (исключение ex) { бросать; } окончательно { Console.WriteLine("Нажмите любую клавишу..."); Консоль.ReadLine(); } со строкой 31, на которую ссылается ошибка, является эта строка:

objectValue = (объект)SqlGeometry.STGeomFromWKB(новый System.Data.SqlTypes.SqlBytes(bytes), 4326).MakeValid(); Что еще более странно в этой проблеме, так это то, что я сталкиваюсь с ней только в одной из наших сред (конечно, в Prod!), а приведенный выше код приложения успешно работает во всех моих нижних средах. Поэтому я почти уверен, что столкнулся либо с проблемой доступа, либо с разрешениями, либо с каким-то сканированием безопасности, но мне нужна помощь в диагностике. Я не вижу ничего, зафиксированного в Windows EventViewer, что указывало бы на то, почему он считает, что не может найти пространственную библиотеку. Наше установленное программное обеспечение для сканирования безопасности не показывает в своих журналах ничего, что указывало бы на то, что оно предотвращает доступ к библиотеке или что-то в этом роде.

Я запустил Systernals ProcMon и вижу, как процесс сканирует папку приложения в поисках SqlServerSpatial160.dll, я вижу, что он ищет в папке моего приложения в \runtimes\win- x64\родной. Я не совсем понимаю, как читать, что делает ProcMon, но похоже, что это подразумевает, что он успешно читает файл .dll, но затем продолжает попытки найти dll, но не находит ее, и я предполагаю, что это приводит к сбою . Запуск того же теста ProcMon в рабочей среде выглядит так, как будто он останавливается, когда попадает в местоположение файла .dll в файловой системе.

Мое опубликованное приложение содержит исполняемый файл, зависимости .NET и т. д. в корневой папке. Также в корневой папке находятся Microsoft.SqlServer.Server.dll и Microsoft.SqlServer.Types.dll. Пространственная библиотека, которую я предполагаю из nuget, затем находится в подпапке корневой папки, в папке runtimes, в которой затем есть несколько папок архитектуры, а затем, в конечном итоге, SqlServerSpatial160.dll файл.

Очевидно, это некоторая разница в моей среде, но я ищу дополнительные идеи о том, как устранить неполадки или диагностировать, почему возникает эта ошибка, чтобы я мог ее исправить. Запуск от имени администратора не имеет никакого значения, и я также не вижу очевидных различий в таких вещах, как установленные приложения.

Спасибо за любую помощь.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»