Я развиваю спокойную службу с Visual Studio для Mac. Чтобы подключиться к моему локальному экземпляру MongoDB (который запущен и работает), я установил пакет MongoDB NuGet. Классы ссылаются правильно в коде, однако, как только я пытаюсь выполнить соединение он реагирует со следующей ошибкой:.NET на OSX (Mono): не удается подключиться к MongoDB
{
"Message": "An error has occurred.",
"ExceptionMessage": "An error occurred when trying to create a controller of type 'BalanzaController'. Make sure that the controller has a parameterless public constructor.",
"ExceptionType": "System.InvalidOperationException",
"StackTrace": " at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (System.Net.Http.HttpRequestMessage request, System.Web.Http.Controllers.HttpControllerDescriptor controllerDescriptor, System.Type controllerType) [0x000f3] in <f99f496cb0d249c1a945c1fcabce1695>:0 \n at System.Web.Http.Controllers.HttpControllerDescriptor.CreateController (System.Net.Http.HttpRequestMessage request) [0x00028] in <f99f496cb0d249c1a945c1fcabce1695>:0 \n at System.Web.Http.Dispatcher.HttpControllerDispatcher+<SendAsync>d__1.MoveNext() [0x000a9] in <f99f496cb0d249c1a945c1fcabce1695>:0 ",
"InnerException": {
"Message": "An error has occurred.",
"ExceptionMessage": "ntdll.dll",
"ExceptionType": "System.DllNotFoundException",
"StackTrace": " at (wrapper managed-to-native) Interop+NtDll:RtlGetVersion (Interop/NtDll/RTL_OSVERSIONINFOEX&)\n at Interop+NtDll.RtlGetVersion() [0x0001a] in <f13660f89d0d419fba4e315693dd26ea>:0 \n at System.Runtime.InteropServices.RuntimeInformation.get_OSDescription() [0x00007] in <f13660f89d0d419fba4e315693dd26ea>:0 \n at MongoDB.Driver.Core.Connections.ClientDocumentHelper.CreateOSDocument() [0x00042] in <2c531fdd26874b5eb450bd126d409101>:0 \n at System.Lazy`1[T].CreateValue() [0x00075] in /private/tmp/source-mono-4.8.0/bockbuild-mono-4.8.0-branch/profiles/mono-mac-xamarin/build-root/mono-x86/mcs/class/referencesource/mscorlib/system/Lazy.cs:437 "
}
}
Это как-то не удается при поиске нужного файла DLL (или его корреспондента в среде Mono).
Как это исправить?
Благодаря
Что полное имя пакета NuGet вы добавили? Не все могут быть использованы в Mono. –
'MongoDB.Driver', который, как утверждается, является официальным. Это то, что я получаю в 'package.config': –
balanza
Тогда ваш пакет.config ошибочен. «net45» означает .NET Framework 4.5 и выше, что является только Windows. Чтобы использовать его в Mono, вам необходимо изменить targetFramework на .NET Standard, http://mongodb.github.io/mongo-csharp-driver/2.4/getting_started/installation/, а затем вручную отредактировать файлы csproj, чтобы исправить ссылочные сборки. NuGet, возможно, подумал о Mono == .NET Framework, но это не так. –