コンパイル済みの .NET アセンブリ (-ies) をアップロードし、コードを Azure Functions として実行するにはどうすればよいですか?
カスタム アセンブリ内に含まれ、単体テストなどでカバーされる複雑なドメイン ロジックを実行する方法を探しています。
このコードにはどのような制限がありますか? たとえば、リモート データ ストア、ネットワークなどにアクセスします。
コンパイル済みの .NET アセンブリ (-ies) をアップロードし、コードを Azure Functions として実行するにはどうすればよいですか?
カスタム アセンブリ内に含まれ、単体テストなどでカバーされる複雑なドメイン ロジックを実行する方法を探しています。
このコードにはどのような制限がありますか? たとえば、リモート データ ストア、ネットワークなどにアクセスします。
更新: 以下の回答はまだ正しい (まだ機能する) が、プリコンパイル済み関数のファースト クラス サポートも追加されました。詳細については、wiki ページを参照してください。
ドキュメント (ここにリンク) では、次の構文を使用して C# 関数から外部ライブラリと Nuget パッケージを参照する方法について説明しています。#r
#r "System.Web.Http"
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
public static Task<HttpResponseMessage> Run(HttpRequestMessage req)
これに関する追加の詳細は、この SO 投稿で確認できます。
カスタム実行可能ファイルをデプロイして、Azure 関数から呼び出すこともできます。たとえば、Windows BAT テンプレートから開始する場合、それを使用して exe を呼び出すことができます。これは私たちのレポにあるサンプルで、画像のサイズ変更の例を示しています。このサンプルには、新しい画像が BLOB コンテナーにアップロードされるたびにトリガーされる BAT スクリプトがあり、スクリプトはResizer.exe
サイズ変更を行うツールを呼び出します。
.\Resizer\Resizer.exe %original% %resized% 200
制限については、すべての Azure Functions コードがApp Service サンドボックスで実行されます。その制限については、こちら で説明されています。
コンパイル済みの .NET アセンブリを Azure 関数で実行するには、カスタム dll を FTP で関数ルート フォルダー (bin フォルダー内) にアップロードし、#r を使用して Azure 関数コードから参照することができます。
次に例を示します。「WorkOnImages.dll」という名前の dll が、azure 関数フォルダー内の azure にアップロードされます。
次に、Azure 関数で dll が参照されます。
ソースのブログ記事はこちら
VS2017 の Azure Function ツール サポートの欠如、Azure SDK 3.0 との非互換性に落胆した私は、Functions のタオルを投げ捨て、VS2017 と WebJobs SDK を使用するアプローチにフォールバックしようとしていました。
その後、2017 年 3 月 16 日に発表された、Microsoft の Donna Malayeri による優れたブログ投稿で、最も簡単なアプローチが文書化されています。
真のインテリセンス、デバッグ機能など、私が望むすべてのことを実行します。それは素晴らしく、私は振り返りません。