2016-03-29 10 views
1

3つの作業者ロールを含む十分に確立されたプロジェクトがあります。このプロジェクトでは、常にF#を使用していましたが、ワーカーロール自体ではなく、呼び出す関数で使用されていました。私は最近、プロジェクトに別のワーカーロールを追加しましたが、アーキテクチャ(F#コードを呼び出すC#ワーカーロール)は同じままです。私は、展開後にこれらのメッセージを取得してきたこれらの変更以来:Azure作業者ロールの起動中にFSharp.Coreバージョンエラーが発生する

Could not load file or assembly 'FSharp.Core, Version=4.3.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. 

これはAutofacの依存関係の解決中に起こる:

Autofac.Core.DependencyResolutionException", "exceptionMessage": "An exception was thrown while invoking the constructor 'Void .ctor(Amazon.DynamoDBv2.AmazonDynamoDBConfig 

私は、これはよく知られている問題である知っている、そしてこの溶液を追加する一般的ですいくつかのバインディングリダイレクト。私は、このようにリダイレクトを追加しました:

<dependentAssembly> 
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
<bindingRedirect oldVersion="0.0.0.0-4.3.1.0" newVersion="4.3.1.0" /> 

を...すべてのワーカーの役割が含まれてはapp.configを持って、溶液中のすべてのプロジェクトに。また、FSharp.coreへのすべての参照でバージョン4.3.1.0が使用され、コピーローカルがtrueに設定されていることも確認しました。

また、FSharp.Coreのnugetパッケージを使用して、ソリューションのC#プロジェクトにFSharp.coreを追加しようとしました。

答えて

3

私はこのようにいつも働いていて、新しい労働者の役割を追加するだけで何とかしていないように思えます。

デプロイメントプロセスがわからない場合は、まずクラウドサービスの手動パッケージを実行することをお勧めします(Visual Studioまたはコマンドラインからcspackを使用して直接行うことができます)。これにより、ワーカーロールに展開されるすべてのコードを含むzipファイルが作成されます。これにFSharp.Core(および正しいバージョン)が含まれていることを確認してください。

私はまた、あなたが新しいワーカーの役割を追加してから変更されたものと(まだ行っていない場合)最後に迅速に差分を取る

を示唆している - 。FSharp.Core Nugetパッケージに気を付けます - FSharp.CoreはVisual Studioで扱われる方法が異なります。プロジェクトで参照されているバージョンのFSharp.Coreが既に存在する場合、デフォルトではNugetのバージョンは参照されません。

+0

ありがとうございます - そこにいくつかの華麗なヒント。私はそれらをフォローしたらすぐに結果を投稿します。 – Kit

+0

クラウドサービスをパッケージ化し、cspkgファイルの名前をzipに変更して解凍しました。内側のcssxファイルの名前をzipに変更し、解凍しました。 そこにFSharp.core.dll 4.3.1.0と4.4の両方があることが判明しました。これがFSharp.Core Nugetパッケージのインストールによって行われたことを認識しました。上記の変更を元に戻して、FSharp.core.dllがすべて4.3.1.0であることが判明しました。 問題を証明するためにそのバージョンを再デプロイすると、まだそこに残っています(私はNugetted FSharp.coreの前に起きていたと思います)。 – Kit

+0

もう一度失敗しました - まだ "ファイルまたはアセンブリを読み込めませんでした" FSharp.Core、Version = 4.3.1.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a "またはその依存関係の1つアセンブリされたアセンブリのマニフェスト定義がアセンブリ参照と一致しません"ビルド中に何かが更新されていない場合に備えて、ブランチビルド全体を吹き飛ばして再作成します(MyGet)。 – Kit

関連する問題