使用Azureの機能を、私は参照し、私のC#関数にNuGetパッケージを使用することができますか?
使用Azureの機能を、私は参照し、私のC#関数にNuGetパッケージを使用することができますか?
回答:
はい!Azure Functionsポータルは現在、NuGetパッケージを追加および管理するメカニズムを提供していませんが、ランタイムはNuGet参照をサポートしており、関数のコンパイルおよび実行時にそれらが正しく使用されることを確認します。
依存関係を定義するにProject.json
は、必要なNuGetパッケージ参照を含むファイルを作成する必要があります。Microsoft.ProjectOxford.Face
バージョン1.1.0 への参照を追加する例を次に示します。
{
"frameworks": {
"net46":{
"dependencies": {
"Microsoft.ProjectOxford.Face": "1.1.0"
}
}
}
}
Azure Functionsポータルは、関数ファイルを管理する便利な方法を提供します。これを使用して、次のものを作成(またはアップロード)できますproject.json
。
project.json
マシンに以前に作成したファイルがある場合は、オプションをクリックしてファイルをアップロードすることもできますproject.json
パッケージ参照を定義します(上の例をテンプレートとして使用できます)。パッケージの復元プロセスが開始され、ログウィンドウに次のような出力が表示されます。
2016-04-04T19:02:48.745 Restoring packages.
2016-04-04T19:02:48.745 Starting NuGet restore
2016-04-04T19:02:50.183 MSBuild auto-detection: using msbuild version '14.0' from 'D:\Program Files (x86)\MSBuild\14.0\bin'.
2016-04-04T19:02:50.261 Feeds used:
2016-04-04T19:02:50.261 C:\DWASFiles\Sites\facavalfunctest\LocalAppData\NuGet\Cache
2016-04-04T19:02:50.261 https://api.nuget.org/v3/index.json
2016-04-04T19:02:50.261
2016-04-04T19:02:50.511 Restoring packages for D:\home\site\wwwroot\HttpTriggerCSharp1\Project.json...
2016-04-04T19:02:52.800 Installing Newtonsoft.Json 6.0.8.
2016-04-04T19:02:52.800 Installing Microsoft.ProjectOxford.Face 1.1.0.
2016-04-04T19:02:57.095 All packages are compatible with .NETFramework,Version=v4.6.
2016-04-04T19:02:57.189
2016-04-04T19:02:57.189
2016-04-04T19:02:57.455 Packages restored.
予想どおり、Azure Functionsランタイムはパッケージアセンブリへの参照を自動的に追加するため#r "AssemblyName"
、を使用してアセンブリ参照を明示的に追加する必要はありません。必要なusing
ステートメントを関数に追加して、NuGetパッケージで定義されている型を使用するだけです。 veを参照。
Azure FunctionsはApp Servicesの上に構築されているため、上記の手順の代わりに、標準のAzure Webアプリ(Azure Webサイト)で利用できるすべての優れた展開オプションにアクセスできます。
ここではいくつかの例を示します。
App Serviceエディター(モナコ)を使用してブラウザーから直接ファイルを管理するには:
Function app settings
Go to App Service Settings
Tools
、ボタンOn
、それはまだ有効になっていない場合とでクリックGo
project.json
れたら、ファイルを関数のフォルダー(関数にちなんで名付けられたフォルダー)にドラッグアンドドロップします。https://<function_app_name>.scm.azurewebsites.net
D:\home\site\wwwroot\<function_name>
Project.json
ファイルをフォルダー(ファイルグリッド上)にドラッグアンドドロップします。接続したら(上記の手順に従って)、 Project.json
ファイルをに/site/wwwroot/<function_name>
その他の展開オプションについては、https://azure.microsoft.com/en-us/documentation/articles/web-sites-deploy/を参照してください。
project.json
Function Appが実行されていないときに継続的インテグレーションを有効にして関数をファイルにデプロイすると、Function Appが初期化されるとパッケージの復元が自動的に行われます。ファイルをソース管理に追加しないことをお勧めしますproject.lock.json
。
関数は、コンパイル済みのアセンブリとして展開することもできます。この場合、すべての依存関係管理はVisual Studioで処理されます。このオプションは、Visual Studioの任意のバージョンで標準クラスライブラリとして、またはVisual Studio 2017 Azure関数ツールを使用して使用できます。
function script root
最後の段落ですか?私はそれがどこにあるのか理解していproject.json
ます。あれは正しいですか?
project.json
スクリプトルートの子フォルダであるあなたの機能フォルダ、です。スクリプトルートはwwwroot
、Azureのフォルダーにマップされます。
このスレッドは私に大いに役立ちました-しかし、Project.jsonを機能させるために数時間を無駄にしました-役に立たなかった。
バージョン2.xでAzure関数を作成する場合は、別の方法でこれを行う必要があります。
上記のように新しいファイルを作成しますが、function.projという名前を付けます。このファイルには、Nugetを介してライブラリをインポートするためのXML構造があります。
これが、Amazon S3 SDK for .Netをインポートする私の例です。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AWSSDK.S3" Version="3.3.26.3"/>
<PackageReference Include="AWSSDK.Core" Version="3.3.29.1"/>
</ItemGroup>
</Project>
これを保存すると、パッケージがインストールされていることを示すコンソールの更新が表示されます。これは実際には十分に文書化されておらず、これを見つけるのにかなりの時間がかかりました。だから私はこれが誰かを助けることを願っています。
Azure FunctionsでNugetパッケージを使用できます。最も簡単な方法は、Azure FunctionsのテンプレートがあるVisual Studio 2017 15.4を使用することです。以下の手順に従ってください
1)Azure関数プロジェクトの追加:ソリューションを右クリックして、[新しいプロジェクトの追加]を選択します。「Azure Function」プロジェクトがあるCLOUDオプションに移動します。
2)これで、Nugetパッケージを追加することができます。"DEPENDENCIES"を展開して右クリックし、オプション "Manage Nuget Packages"を選択します。Nugetパッケージダイアログが表示されたら、インストールするNugetパッケージを選択します。下のスクリーンショットを参照してください
3)Azure関数を公開すると、Visual Studioがすべての設定などを処理します。
この方法は、Visual Studio 2017 15.4以降を使用する場合にのみ機能します。使用しない場合は、他の方法で説明されている他の方法に従う必要があります。
のSFTP
どこかに保存されている外部ライブラリであるクライアントを使用したいとしますNuGet
。
これを行うには、最新のAzure Functions仕様に従って、以下を実行します。
Azure関数内のファイルセクションを開き、という新しいファイルを追加しますfunction.proj
。
詳細については、Microsoftのドキュメントを参照してください。
その中に、構造を使用しfunction.proj
てNuget
パッケージ参照を配置しますXML
(Visual Studioで*.csproj
ローカルプロジェクトを作成し、そこにパッケージをインストールする場合、ファイル内にあるのと同じ種類の構造)。NuGet
ここで重要なのは、ライブラリの完全なパスを指定する必要があることです。たとえば、次のように表示されます。 "D:\home\site\wwwroot\bin\your_custom_library.dll"
最後に、[ログ]セクションを開いてコードを保存します。しばらくすると、NuGet
パッケージ復元ログが表示されます。
注:これらのログは、function.proj
ファイルの保存時またはプロジェクトの実行時にも表示される可能性があります。
それでもライブラリが不明と表示される場合は、Visual StudioからAzure Cloud ExplorerDll
を使用して手動でbinフォルダーに追加してください。
function.proj
、の場所dll
が[ログ]セクションに表示されます。Azure Functionのページをもう一度再読み込みする必要がある場合や、[実行]ボタンをクリックして、NuGetパッケージのインストールと場所を確認する場合があります。ログセクションで何が印刷されているかを場所として確認し、それを配置してみてください。
Visual Studio 2017の新しい.csproj形式もサポートされていることに注意してください。プロジェクトをASPNET Webプロジェクトとして作成する場合、Azure Functionsランタイムは、プロジェクトをビルドする前に必要なすべてのnugetパッケージをダウンロードします。