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を追加しようとしました。
ありがとうございます - そこにいくつかの華麗なヒント。私はそれらをフォローしたらすぐに結果を投稿します。 – Kit
クラウドサービスをパッケージ化し、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
もう一度失敗しました - まだ "ファイルまたはアセンブリを読み込めませんでした" FSharp.Core、Version = 4.3.1.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a "またはその依存関係の1つアセンブリされたアセンブリのマニフェスト定義がアセンブリ参照と一致しません"ビルド中に何かが更新されていない場合に備えて、ブランチビルド全体を吹き飛ばして再作成します(MyGet)。 – Kit