Я использую project.json
для импорта EntityFramework 6.1.3
NuGet пакет. Я могу подтвердить, что пакет NuGet успешно восстановлен в моем функциональном приложении.Azure Функции с инфраструктурой Entity
Согласно document, я могу напрямую использовать EntityFramework. Тем не менее, я получаю ошибку, как:
ManualTriggerCSharp1: Could not load file or assembly 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.
кажется, что моя функция не может загрузить EntityFramework DLL правильно. Хотя я скопировал и EntityFramework.dll
, и EntityFramework.SqlServer.dll
в каталог bin
, он по-прежнему жалуется на то же исключение.
Что мне не хватает?
Update
Вот мой project.json
файл:
{
"frameworks": {
"net46":{
"dependencies": {
"Autofac": "4.2.0",
"AutoMapper": "5.1.1",
"EntityFramework": "6.1.3",
"Newtonsoft.Json": "9.0.1"
}
}
}
}
Как я уже говорил выше, это не работает. Таким образом, я вручную скопировать оба EntityFramework.dll
и EntityFramework.SqlServer.dll
в каталог bin
и ссылаться на него в run.csx
файл как:
#r "EntityFramework.dll"
#r "EntityFramework.SqlServer.dll"
Но до сих пор жалуются. Вся линия сообщения журнала является:
2016-11-18T20:22:46.296 Exception while executing function: Functions.ManualTriggerCSharp1. mscorlib: Exception has been thrown by the target of an invocation. ManualTriggerCSharp1: Could not load file or assembly 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.
Update 2
Вот мой полный код функции:
#r "Tournaments.EntityModels.dll"
using System;
using System.Configuration;
using Tournaments.EntityModels;
public static void Run(string input, TraceWriter log)
{
log.Info($"C# manually triggered function called with input: {input}");
var connString = ConfigurationManager.ConnectionStrings["TournamentDbContext"].ConnectionString;
var dbContext = new TournamentDbContext(connString);
var numberOfPlayers = dbContext.Players.ToList().Count;
log.Info($"Number of Players: {numberOfPlayers}");
}
Обратите внимание, что Tournaments.EntityModels.dll
является фактической моделью сущностей базы данных. А вот мой project.json
:
{
"frameworks": {
"net46": {
"dependencies": {
"EntityFramework": "6.1.3"
}
}
}
}
Я был в состоянии собрать функцию. Нет никакой проблемы. Проблема возникла во время выполнения. когда я запустил эту функцию, я получил ошибку:
2016-11-19T00:52:40.818 Function started (Id=c03af3f2-38f5-4df9-9bc5-b5932c365c04)
2016-11-19T00:52:40.818 Function completed (Failure, Id=c03af3f2-38f5-4df9-9bc5-b5932c365c04)
2016-11-19T00:52:40.836 Exception while executing function: Functions.ManualTriggerCSharp3. mscorlib: Exception has been thrown by the target of an invocation. ManualTriggerCSharp3: Could not load file or assembly 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.
Я смотрел в журналы в KUDU и нашел это из logstream:
2016-11-19T01:00:25.454 Executing: 'Functions.ManualTriggerCSharp3' - Reason: 'This function was programmatically called via the host APIs.'
2016-11-19T01:00:25.649 Function started (Id=b18b45a7-83a8-453e-a337-955e6a4a5117)
2016-11-19T01:00:25.649 Function completed (Failure, Id=b18b45a7-83a8-453e-a337-955e6a4a5117)
2016-11-19T01:00:25.649 A ScriptHost error has occurred
2016-11-19T01:00:25.649 Could not load file or assembly 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.
2016-11-19T01:00:25.649 Function started (Id=b18b45a7-83a8-453e-a337-955e6a4a5117)
2016-11-19T01:00:25.649 Function completed (Failure, Id=b18b45a7-83a8-453e-a337-955e6a4a5117)
2016-11-19T01:00:25.665 Exception while executing function: Functions.ManualTriggerCSharp3. mscorlib: Exception has been thrown by the target of an invocation. ManualTriggerCSharp3: Could not load file or assembly 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.
2016-11-19T01:00:25.665 Exception while executing function: Functions.ManualTriggerCSharp3. mscorlib: Exception has been thrown by the target of an invocation. ManualTriggerCSharp3: Could not load file or assembly 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.
2016-11-19T01:00:25.681 Exception while executing function: Functions.ManualTriggerCSharp3
2016-11-19T01:00:25.696 Could not load file or assembly 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.
2016-11-19T01:00:25.696 Executed: 'Functions.ManualTriggerCSharp3' (Failed)
2016-11-19T01:00:25.696 Could not load file or assembly 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.
2016-11-19T01:00:25.696 Function had errors. See Azure WebJobs SDK dashboard for details. Instance ID is 'b18b45a7-83a8-453e-a337-955e6a4a5117'
2016-11-19T01:00:25.696 Could not load file or assembly 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.
А вот сообщение трассировки стека из журнала функции:
...obs.Script.Description.FunctionInvokerBase.d__23.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.WebJobs.Host.Executors.FunctionInvoker`1.d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__53.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__3b.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__36.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__1a.MoveNext()
--- End of inner exception stack trace ---
Я думаю, что могу предоставить всю необходимую информацию, которую я могу здесь. Не могли бы вы дать мне совет, пожалуйста?
Не могли бы вы добавить project.json? – Youngjae
У меня нет автоматических ссылок с пакетами 'project.json', работающих (несмотря на документацию). Я просто копирую dll и ссылаюсь на них с помощью '# r'. –
Вы используете последнюю версию исполнения (1.0)? Я просто попробовал себя, и все получилось. Я добавил этот пакет к project.json, и пакет был автоматически восстановлен. Я добавил необходимые инструкции EF (нет #r) и все скомпилированные. – mathewc