После обновления до .NET ядра 1.0 с использованием фреймворки net46 я получаю следующее исключение:MissingMethodException после обновления до .net ядра 1.0 при использовании щеголеватого
System.MissingMethodException was unhandled by user code
HResult=-2146233069
Message=Method not found: 'System.Collections.Generic.IEnumerable`1<!!0> GridReader.Read(Boolean)'.
Source=Sdm.Web
StackTrace:
at Sdm.Web.SqlAccess.SqlMgr.GetNumbersForMainScreen(TenantId tenantId)
at Sdm.Web.Test.TestDrivers.SqlMgrTestDriver.TestGetNumbersForMainScreen() in ...\Unittest\SqlMgrTestDriver.cs:line 37
InnerException: (null)
Это происходит во время выполнения непосредственно перед попыткой ввести метод называется GetNumbersForMainScreen, который содержит следующие строки кода:
using (SqlMapper.GridReader result = connection.QueryMultiple(SqlGetNumbersForMainScreen, new { recent = recent, tid = tenantId.Id }))
{
var val = new NumbersForMain()
{
AlarmsCriticalCount = result.Read<int>().Single(),
AlarmsNoncriticalCount = result.Read<int>().Single(),
RoomsCount = result.Read<int>().Single(),
UnitsOnlineCount = result.Read<int>().Single(),
UnitsCount = result.Read<int>().Single(),
};
val.UnitsOfflineCount = val.UnitsCount - val.UnitsOnlineCount;
return val;
}
Здесь переменная соединение типа IDbConnection и QueryMultiple является метод расширения от Dapper v1.50.2.0.
Я довольно озадачен этим. Код компилируется просто отлично, но во время выполнения мне говорят, что метода не существует.
Я предполагаю, что это проблема, связанная с несоответствием в версии базовых зависимостей. В Java с использованием Maven или аналогичных инструментов я бы запускал некоторый анализ зависимостей, ища конфликты версий в дереве зависимостей, но я не знаю, как устранить эту проблему в .NET.
Любые предложения о причинах этой проблемы или о том, как я могу устранить эту проблему, будут оценены.
Edit 2016-08-25: Мой project.json выглядит следующим образом:
{
"userSecretsId": "XXX",
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},
"dependencies": {
"Dapper": "1.50.2",
"Dapper-Async": "1.3.0",
"EntityFramework": "6.1.3",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "1.0.0",
"Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
"Microsoft.AspNetCore.Diagnostics.Elm": "0.1.0",
"Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0",
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.0",
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",
"Microsoft.Extensions.Caching.Abstractions": "1.0.0",
"Microsoft.Extensions.Caching.Memory": "1.0.0",
"Newtonsoft.Json": "9.0.1",
"Microsoft.AspNetCore.Authentication.JwtBearer": "1.0.0",
"Microsoft.AspNetCore.Authorization": "1.0.0",
"Microsoft.Azure.Devices": "1.0.5",
"Microsoft.AspNetCore.HttpOverrides": "1.0.0",
"EFAttributeConfig": "1.0.0",
"Twilio": "4.5.0",
"Sendgrid": "6.3.4",
"Microsoft.AspNetCore.Routing": "1.0.0",
"Microsoft.AspNetCore.Hosting": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"log4net": "2.0.5"
},
"tools": {
"BundlerMinifier.Core": "2.0.238",
"Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
},
"frameworks": {
"net46": { }
},
"publishOptions": {
"include": [
"wwwroot",
"Views",
"appsettings.json",
"web.config",
"log4net.xml"
],
"exclude": [
"**.user",
"**.vspscc"
]
},
"scripts": {
"prepublish": [ "bower install", "dotnet bundle" ],
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
}
Не могли бы вы разместить свой проект.json? – svick
В итоге я переписал вышеприведенный код, избегая при этом QueryMultiple, и теперь он работает. Мне все еще интересно, как устранить конфликты зависимостей в .NET Core. –
В проект добавлен мой project.json. –