3

ここで非常に珍しい問題に本当に苦労しています。開発スタックを Visual Studio 2012 / .NET 4.5 にアップグレードしました。

Workflow Foundation (4.5) の最新バージョンにアップグレードしたいと考えています。これは、SQL ワークフロー インスタンス ストア スキーマもアップグレードすることを意味し、サイド バイ サイド バージョニングなどの新機能を使用できるようにします。

最初に、C:\Windows\Microsoft.NET\Framework\v4.0.30319\SQL\en\SqlWorkflowInstanceStoreSchemaUpgrade.sql にある .NET 4.5 と共にインストールされたスキーマ アップグレード スクリプトを実行することから始めました。

次に、ワークフロー テストを実行したところ、すべて正常に機能しました。

次のステップは、スキーマとデータの変更を SQL Server データベース プロジェクト (VS 2012 の新しいプロジェクト) に組み込み、これらの変更がビルド プロセスの一部として自動的にビルドおよびデプロイされるようにすることでした。

更新されたデータベース インスタンスからデータベース プロジェクトへのスキーマ比較を行い、すべてのスキーマ変更を識別してインポートし、SqlWorkflowInstanceStoreVersion テーブルが正しい値になるように参照データ スクリプトを更新しました。

次に、プロジェクトを公開しました。つまり、ターゲット データベースが削除され、再作成され、既定の参照データ (ストア バージョンの行を含む) が入力されました。

ワークフロー テストを再度実行したところ、ワークフロー スレッドが戻るのを待っている間にワークフロー テストがすべてタイムアウトになりました。PersistableIdle ハンドラーは Unload に呼び出されますが、Unloaded ハンドラーは呼び出されないため、その間に何かが台無しになっています。

明らかにデータベースが再作成されたことに関係していますが、VS 2012 のスキーマ比較ツールを使用しても違いはわかりません。

この問題が修正されるまで、WF 4.5 の機能をこれ以上進めることはできません。

4

1 に答える 1

1

解決策が見つかったかどうかはわかりませんが、次の情報がアップグレードの問題を抱えている他の人に役立つかもしれないと思いました.

この MSDN の記事は、インプレース アップグレードに関する問題の 1 つを示唆しています: What's New in Windows Workflow Foundation in .NET 4.5

.NET Framework 4.5 で導入された新しい Windows Workflow Foundation 機能は、以前のバージョンのフレームワークを対象とするプロジェクトでは使用できません。.NET Framework 4.5 を対象とするプロジェクトが以前のバージョンのフレームワークに再対象化された場合、いくつかの問題が発生する可能性があります。

C# の式は、デザイナーでValue was set in XAMLというメッセージに置き換えられます。

次のエラーを含む多くのビルド エラーが発生します。

ファイル形式は、現在のターゲティング フレームワークと互換性がありません。ファイル形式を変換するには、ファイルを明示的に保存してください。このエラー メッセージは、ファイルを保存してデザイナーを再度開くと表示されなくなります。

SQL 永続ストアをアップグレードすると、.Net 4.5 をターゲットにしてワークフローを再コンパイルする必要があるようです。または、バージョニングがサポートされるようになったため、永続ストアと通信しようとしてハングします。

あなたの場合は必要ないかもしれませんが、アクティビティ定義と実行中のインスタンスを「アップグレード」するために、更新マップも作成する必要がありました。MSDN は、これに関する長い記事をここで提供しています: 方法: 実行中のワークフロー インスタンスの定義を更新する

また、動的更新のリファレンスも役に立ちました: 動的更新

それはかなり複雑なプロセスでしたが、その後、すべてが再び機能し始めました.

これも役に立つかもしれません:方法: ワークフローの複数のバージョンを並べてホストする

于 2015-05-05T15:53:28.647 に答える