2016-09-16 10 views
10

Azure関数でいくつかの共有クラスを使用してコードを複製しないとします。Azure関数 - 共有クラス

私は空のC#関数を作成し、関数内でクラスを作成し、その後で他の関数にインポートしようとしてい

#r "../Shared/Class.cs"

答えて

18

まず、ルートにフォルダ内の共有コードを配置あなたの関数のAppディレクトリ(例えば、 "Shared")。そのフォルダに共有されたMessage.csxクラスを置きます(例:フルパスD:\home\site\wwwroot\Shared\Message.csx)。あなたの関数にこれを含めるに

#loadのコマンドを使用します。

#load "..\Shared\Message.csx" 

using System; 
using Microsoft.Azure.WebJobs.Host; 

public static void Run(Message message, TraceWriter log) 
{ 
    log.Info($"C# Queue trigger function processed message: {message.Id}"); 
} 

は、詳細についてはヘルプページhereを参照してください。デフォルトでは、そのディレクトリ内のファイルは変更のために追跡されません。そのディレクトリ内のファイルが変更されたときに関数が変更を受け取り、再コンパイルされるようにするには、watchDirectoriesリストに "Shared"ディレクトリをhost.jsonに追加することができます。例えば:

{ 
    "watchDirectories": [ "Shared" ] 
} 
+0

wwwrootフォルダに共有フォルダを作成するにはどうすればよいですか?私はFTPアクセスを持っていますが、読み取り専用モードしかありません。 –

+1

** [ヘルプページ](https://azure.microsoft.com/en-us/documentation/articles/functions-reference)の指示に従って、** Kudu **を使用して機能アプリのファイルシステムにアクセスしてください。説明されているようにAppサービスエディタを使用することもできます。 – mathewc

+0

作品!ありがとうございました! –

2

によりAzureの機能内の変化率には、これは(Azure Functions Tools Roadmapを参照)はもはやC#の機能のために推奨されるアプローチです。ビジュアルスタジオのC#プロジェクトを構造化するための最も現代的で効率的なパターンの描写については、次のブログ記事を参照してください。また、共有DLLの利点をC#で通常どおりに行うことができます。

https://blogs.msdn.microsoft.com/appserviceteam/2017/03/16/publishing-a-net-class-library-as-a-function-app/

https://github.com/devkimchi/Precompiled-Azure-Functions-Revisited

+0

リンクされたブログでは、クラスライブラリが自分のアプリケーションに適していると感じている顧客のために、代わりに機能アプリとして出版する.NETクラスライブラリのみを記述しています"しかし、ツールはまだ準備ができていません。"あなたのプロジェクトにいくつか手作業を加えてプリコンパイルされた機能を試すことができます。 "リンクを共有していただきありがとうございますが、あなたの無条件の「C#プロジェクトの構造のための最も現代的で効率的なパターン」には同意しません。 –

+0

確かに、私はそれを適切な文脈で与えることにより、したがって、より具体的には、ポータルでCSXスクリプトを使用するAzure関数アプリケーションで複数の共有クラスとナゲット依存関係を使用することは、関数Appが複雑になるにつれて、すぐに課題になります。 OPは、これらの課題に対処するようになったばかりだったようです。その結果、FunctionAppをASPNET Web Appsとして開始することに多くの利点があります。これは現在マイクロソフトと少なくとも1人のブロガーから推薦されており、このパスを追求したいと思っている人のために、上のリンクで詳細を見つけることができます。 – solvingJ

0

のVisual Studioから作業し、このようなあなたの機能アプリ内での機能の間にいくつかのC#スクリプトファイルを共有する方法を探しているとき:

#load "..\Shared\MySharedCode.csx" 

ことに注意してください。共有フォルダー内のファイルを「コピーする」に設定する必要があります。

関連する問題