2016-11-14 17 views
0

これまで私のAzure機能は1つの外部アセンブリ(Assembly1)のみに依存していましたが、正常に動作していました。Azure関数で複数の外部アセンブリを参照する方法は?

しかし、最近、Assembly1がAssembly2を参照している2つの外部アセンブリが存在するため、いくつかの変更を加えなければなりませんでした。

私は同じことがAssembly1ようだった(私は意味、Azureの機能の「ビン」フォルダに.dllファイルをコピーし、文「Assembly2 #R」を使用してAzureの機能でそれをインポートAssembly2を展開している。

を。これは私に次のコンパイルエラーできます -

例外機能を実行中:Functions.ProcessCsvRows Assembly1:ファイルまたはアセンブリをロードできませんでした。 'Assembly2を、 バージョン= 1.0.0.0、カルチャニュートラル、PublicKeyToken = = nullを' または 依存関係のうちの1つです。指定されたファイルが見つかりません。 started(ID = dc837832-9303-4ae4-a8ae-133ab531250c) アセンブリ 'Assembly2、Version = 1.0.0.0、Culture =ニュートラル、 PublicKeyToken = null'が見つかりませんでした。プライベートなアセンブリファイルがありませんか?

これについての詳細は、コードの下に見つけてください -

#r "Assembly1" 
#r "Assembly2" 

using System; 
using System.Net; 
using Newtonsoft.Json; 
using System.IO; 
using System.Collections.Generic; 
using System.Configuration; 
using Assembly1.Entities; 

public static async Task<object> Run(HttpRequestMessage req, TraceWriter log){ 
    var jsonContent = await req.Content.ReadAsStringAsync(); 
    dynamic data = JsonConvert.DeserializeObject(jsonContent.ToString()); 
    ProcessCsvFileContents_Result _processResponse = await DataProcessor.ProcessCsvFileContents(data.FileContent.ToString(), connectionString, clientId, redirectUrl); // DataProcessor exists in Assembly1 only 
    -- response processing code -- 
} 

が多く、この上の任意の助けを感謝しています。

+0

そうですか? http://www.robfox.nl/2016/04/27/referencing-external-assemblies-azure-functions/ – 4c74356b41

+0

はい、私は既にそれを参照していますが、DLLファイルの場所を除いて、そこに記載されているすべての手順を実行しています私は関連するAzure関数のbinフォルダにアップロードしています。これは、私のものが私的なアセンブリである(共有されていない)からです。私が言ったように、私は "Assembly1"だけを使用しなければならないまで、これはすべてうまくいきました。 「Assembly2」を導入した後、私はこの問題に直面しました。 – Nirman

+0

あなたのdllを含む関数フォルダ内にbinフォルダがありますか?それはドキュメント[here](https://azure.microsoft.com/en-us/documentation/articles/functions-reference-csharp/)に従って動作するはずです。ドキュメントごとにアセンブリ名の末尾に「.dll」を追加して、それが役立つかどうか確認してください。 – mathewc

答えて

0

Nirman、

プライベートアセンブリは、それらの拡張(例えば、.dllに)で参照されるべきです。 、両方、assembly1.dllとassembly2.dllがbinフォルダに配置されていることを確認し

  1. に:あなたは実行の失敗に実行しているようにあなたは、次の項目をチェックしてくださいすることができ

    (コンパイルが成功した)ルックスその関数のフォルダ

  2. ファイルがデプロイされる前に関数参照を更新した場合は、バインディングが失敗している可能性があります。 機能アプリケーション(サイトを再起動してください)

これは役に立ちます。

+0

ありがとうFabio .. Azureのサイトを再起動すると、トリックができました。ありがとうございました:) – Nirman

+0

Nirman、私はこの回答を見直していました。どういうわけか、参照命令が間違っていました。パスなし、代わりにアセンブリ)。私は上記で明確にしたが、あなたがそれをしたと仮定している、そうでなければ問題に遭遇している可能性が高いが、プライベートアセンブリを参照するときにファイル拡張子を使用する必要があります。 –

関連する問題