2017-06-07 8 views
1

Azure関数内の.csxファイルは、関数のproject.jsonファイルにリストされている場合、ナゲットパッケージを使用できます。例:Azure関数:共有.csxでNugetパッケージを使用できますか?

{ 
    "frameworks": { 
    "net46":{ 
     "dependencies": { 
     "Microsoft.ProjectOxford.Face": "1.1.0" 
     } 
    } 
    } 
} 

しかし、どのような機能の下で(すなわちない特定の機能で)アプリケーションのルートを配置している.csx共有ファイルとどうなりますか? App関数(ルート)レベルでナゲットパッケージを導入する方法はありますか? Azure Functions C# developer referenceで説明したように、私は共有binフォルダにnugetパッケージのDLLをアップロードでの回避策を見つけた

共有アセンブリは、機能アプリ内でのすべての機能間で共有されています。カスタムアセンブリを参照するには、アセンブリを関数app(関数appルートのbinフォルダなど)にアップロードします。

これは私のコードがnugetパッケージに依存し、dllに依存しないように改善する方法はありますか?

+1

共有された '.csx'ファイルではどうしますか?関数本体からの '#load'?もしそうなら、関数からNuGetを参照することはできますか? – Mikhail

+0

はい、私は関数から共有の.csxをロードし、関数のproject.jsonはナゲットの依存関係を指定しますが、まだコンパイルエラーが発生します。 – urig

+1

コンパイルエラーは何ですか?共有csxで適切なステートメントを使用していますか? – ahmelsayed

答えて

1

実際のパッケージ参照は各関数で管理されます(つまり、パッケージ参照の関数アプリケーションレベルのセットはありません)。#loadディレクティブを使用して関数に渡すと、共有CSXファイルは同じコンパイル単位になります。あなたの関数で定義されたアセンブリ/パッケージ参照を消費することができます。しかし、あなたはまだそれらを機能レベルで管理する必要があります。

#loadの動作は、通常のC#プロジェクトでリンクされたファイルと考えることができます。このプロジェクトでは、ファイルが取り込まれますが、プロジェクトのコンテキスト内でコンパイルされます。これはここの関数に当てはまります。

+0

ありがとうございます。あなたが記述しているように、関数レベルでナゲット依存性を正しく指定すると、共有.csxが依存関係を利用する場合でも、関数はうまくコンパイルされることがわかりました。 – urig

関連する問題