Использование пользовательских библиотек DLL в функциях Azure Visual Studio Preview

Как импортировать пользовательскую библиотеку классов в функцию Azure в Visual Studio? В настоящее время я создал библиотеку классов и добавил ее в папку bin в проекте Azure Function. Я добавил ссылку на класс в run.csx.

запустить.csx:

#r "../bin/ClassLibrary1.dll"

using System;
using ClassLibrary1;

public static void Run(TimerInfo myTimer, TraceWriter log)
{
     log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
     dynamic class1 = new Class1();
}

Это вызывает ошибку после того, как функция устанавливает таймер, указывающий на отсутствие System.Runtime. Я попытался добавить System.Runtime, но безуспешно. Библиотека классов — это ядро ​​.net, но я также буду ссылаться на библиотеку классов .net 4.6.


person Dakota Kincer    schedule 07.12.2016    source источник


Ответы (2)


Дакота,

Зависимости обычно развертываются/ссылаются на приложение или библиотеку .NET Core, как правило, путем ссылки на соответствующие пакеты NuGet. Поэтому вам нужно либо указать необходимые пакеты, либо скопировать зависимости вашей сборки в ту же папку.

Кроме того, похоже, что это так, но убедитесь, что ваша библиотека .NET Core нацелена не более чем на Netstandard 1.3.

Надеюсь, это поможет!

person Fabio Cavalcante    schedule 07.12.2016
comment
Добавил ссылку, как вы указали, и проверил, что мой NetStandard - 1.6. Это ошибка, которую я сейчас получаю: Произошла ошибка ScriptHost. Исключение при выполнении функции: Functions.TimerTriggerCSharp. mscorlib: Исключение было вызвано целью вызова. f-TimerTriggerCSharp__1128197424: не удалось загрузить файл или сборку «System.Runtime, версия = 4.1.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a» или одну из ее зависимостей. Система не может найти указанный файл. - person Dakota Kincer; 07.12.2016
comment
Вам нужно либо убедиться, что зависимости (dll) развернуты с вашей библиотекой, либо добавить ссылку на пакет в System.Runtime(nuget.org/packages/System.Runtime), но эти зависимости необходимо добавить (такова природа приложений .NET Core), поскольку они не являются частью платформы. Я обновлю ответ, чтобы удалить встроенную ссылку на сборку, так как это действительно неприменимо в данном конкретном случае. Кроме того, при работе с функциями вам необходимо ориентироваться на Netstandard 1.3 или ниже. Исправление этого выше также было неясным. - person Fabio Cavalcante; 07.12.2016
comment
Я отмечаю это как ответ. Если у кого-то еще есть эта проблема, оказывается, вам нужно переустановить Visual Studios и обязательно удалить ссылки на предыдущие версии. У Visual Studio был поврежденный devenv и другие проблемы. После установки новой копии все заработало идеально, как и сказал Фабио. Благодарю вас! - person Dakota Kincer; 08.12.2016

Аналогичная проблема здесь со ссылкой на мою пользовательскую библиотеку классов из функции С#, начальная ошибка:

«Тип «Атрибут» определен в сборке, на которую нет ссылок. Необходимо добавить ссылку на сборку «netstandard, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = cc7b13ffcd2ddd51»

Проблема заключалась в том, что я ориентировался на NetStandard 2.0 в своем проекте (по умолчанию), и как только я понизил версию до 1.3, все заработало.

person Kevin Holbrook    schedule 22.01.2018