web-dev-qa-db-ja.com

Azure FunctionsでNuGetパッケージを使用するにはどうすればよいですか?

Azure Functions を使用すると、C#関数でNuGetパッケージを参照して使用できますか?

97

はい!現在、Azure FunctionsポータルはNuGetパッケージを追加および管理するメカニズムを提供していませんが、ランタイムはNuGet参照をサポートし、関数のコンパイルおよび実行時にそれらが正しく使用されるようにします。

依存関係を定義するには、必要なNuGetパッケージ参照を含むProject.jsonファイルを作成する必要があります。 Microsoft.ProjectOxford.Faceバージョン1.1.0への参照を追加する例を次に示します。

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

Azure Functionsポータルは、関数ファイルを管理する便利な方法を提供します。これを使用して、project.jsonを作成(またはアップロード)できます。

  1. 関数のdevelopセクションで、view filesをクリックします
  2. ファイルをcreateするオプションをクリックします(以前にマシンにproject.jsonファイルが作成されている場合は、オプションをクリックしてファイルをアップロードすることもできます)
  3. ファイルに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パッケージで定義された型を使用できますあなたが参照しました。

追加の展開オプション

Azure FunctionsはApp Servicesの上に構築されているため、上記の手順の代替手段として、標準のAzure Webアプリ(Azure Webサイト)で利用可能なすべての優れた展開オプションにもアクセスできます。

ここではいくつかの例を示します。

App Service Editorの使用(Monaco)

App Service Editor(Monaco)を使用して、ブラウザーから直接ファイルを管理するには:

  • Azure Functionsポータルで、Function app settingsをクリックします
  • 詳細設定セクションで、Go to App Service Settingsをクリックします
  • Toolsボタンをクリックします
  • Developで、App Service Editorをクリックします
  • まだ有効になっていない場合はOnにし、Goをクリックします
  • ロードされたら、project.jsonファイルを関数のフォルダー(関数の名前が付けられたフォルダー)にドラッグアンドドロップします。

SCM(Kudu)エンドポイントを使用する

  • ナビゲート:https://<function_app_name>.scm.azurewebsites.net
  • Debug Console> CMDをクリックします
  • D:\home\site\wwwroot\<function_name>に移動します
  • Project.jsonファイルをフォルダー(ファイルグリッド)にドラッグアンドドロップします。

FTP

継続的インテグレーション

Function Appが実行されていないときに継続的な統合を有効にし、project.jsonファイルを使用して関数を展開すると、Function Appが初期化されるとパッケージの復元が自動的に行われます。 project.lock.jsonファイルをソース管理に追加することはお勧めしません

プリコンパイル済みアセンブリ

関数は、プリコンパイル済みアセンブリとして展開することもできます。この場合、すべての依存関係管理はVisual Studioで処理されます。このオプションは、Visual Studioのすべてのバージョンで標準クラスライブラリとして、または Visual Studio 2017 Azure Functions Tools を使用して使用できます。

133

このスレッドは私を大いに助けてくれました-しかし、私はProject.jsonを動作させるために数時間を無駄にしました-無駄に。

バージョン2.xでAzure関数を作成する場合、別の方法でこれを行う必要があります。

前述のように新しいファイルを作成しますが、名前はfunction.projです。このファイルには、Nugetを介してライブラリをインポートするためのXML構造が含まれています。

これは、.Net用Amazon S3 SDKをインポートする私の例です。

<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>

これを保存すると、パッケージがインストールされていることを示すコンソールの更新が表示されます。これは実際に十分に文書化されておらず、これを見つけるのに数時間かかりました。だから、これが誰かを助けることを願っています。

18
James Cooke

Azure FunctionsでNugetパッケージを使用できます。最も簡単な方法は、Azure FunctionsのテンプレートがあるVisual Studio 2017 15.4を使用することです。以下の手順に従ってください

1)Azure関数プロジェクトの追加:ソリューションを右クリックして、[新しいプロジェクトの追加]を選択します。 CLOUDオプションに移動すると、「Azure Function」プロジェクトが見つかります。

Azure Function

2)Nugetパッケージを追加するのは素晴らしいことです。 「依存関係」を展開し、右クリックして「Nugetパッケージの管理」オプションを選択します。 Nuget Packageダイアログが表示されますので、インストールしたいNugetパッケージを選択してください。下のスクリーンショットをご覧ください

3)Azure関数を公開すると、Visual Studioがすべての設定などを処理します。

この方法は、Visual Studio 2017 15.4以降を使用している場合にのみ機能します。そうでない場合は、他の人が説明した他の方法に従う必要があります。

10
Sujit Singh

NuGetのどこかに保存されている外部ライブラリであるSFTPクライアントを使用したいとします。

これを達成するには、最新のAzure Functions仕様に従って、以下を実行します。

  1. Azure Function内のファイルセクションを開き、function.projという新しいファイルを追加します。

    enter image description here 詳細については、Microsoft ドキュメント を参照してください。


  1. そのfunction.projの中に、XML構造(Visual Studioでローカルプロジェクトを作成してNuGetパッケージをインストールする場合に*.csprojファイル内で見つけることができる同じ種類の構造)を使用してNugetパッケージ参照を配置します。

    enter image description here


  1. 次に、プロジェクトへのライブラリ参照を含めましょう: enter image description here

    ここで重要なことは、ライブラリに完全なパスを提供することです。たとえば、次のように表示されます:"D:\home\site\wwwroot\bin\your_custom_library.dll"


  1. 次に、ライブラリ固有のコードをテストします。 enter image description here

  1. 最後に、[ログ]セクションを開き、コードを保存します。しばらくすると、NuGetパッケージの復元ログが表示されます。 enter image description here

    注:これらのログは、function.projファイルの保存時またはプロジェクトの実行時にも表示される場合があります。


ライブラリがまだ不明と表示される場合は、Visual StudioからAzure Cloud Explorerを使用して、手動でライブラリをbinフォルダーに追加してみてください。

enter image description here

1

Visual Studio 2017の新しい.csproj形式もサポートされていることに注意してください。プロジェクトをASPNET Webプロジェクトとして作成する場合、Azure Functionsランタイムは、プロジェクトをビルドする前に必要なすべてのnugetパッケージをダウンロードします。

1
solvingJ