2013年1月10日木曜日

Visual Studio 2008からVisual Studio 2010へのアップグレード(Crystal Reportsを含む)


クリレポ 2017.8 最新記事あり → https://oyaji-pgm.blogspot.jp/2017/08/20178-visual-studio-2017-2015-2013-2012_13.html


以前.NET Framework 3.5.1で作成したシステムを今回、.NET Framework 4化する事に。
このプロジェクトには、あの厄介なCrystal Reportsが含まれており、案の定意味不明なエラーを吐いてくれるので、大いに混乱させてもらいました。

先回書いたように、ちょうどクリレポは2010からsap配下のソリューションになったので、サポート体制が大きく変わり余計面倒に。

Crystal ReportsはVisualStudioのあるバージョンと対になっているので、VisualStudioを新らしいものに変えると色々と面倒です。



以下に記す対策は、
Visual Studio 2010でCrystal Reports2010 が動かない、と言う話の対処も手順の中で行っています。
しかし既にVS2012が出ているので今更VS2010!?しかもVS2012からクリレポが使えなくなってしまいましたから、さらに今更感が・・・
が、VS2012はSP1も出ていますが何かイマイチ動作が安定してない気が?Windows7で動かしているからですかね?



※復活しました!VS2012でクリレポが使えます♪
  → VisualStudio2012にSAP Crystal Reports が対応!(祝)
※VS2012でも同様の問題が出たら下記手順を踏めば良いと思います






< お題 >
Visual Studio 2008システム → Visual Studio 2010化
同時に、
Crystal Reports2008 → Crystal Reports2010 化も行う




< 手順 >
① PCへSAP Crystal Reports2010 をインストールする
  (クリレポ2008はアンインストールせず、そのまま放置した)
  ※Crystal Reports2010 インストールは先回書いた記事を参考にして予めPCへインストールしておく

(参考URL Visual Studio 2010 リリース ノート)
http://download.microsoft.com/download/8/3/6/836DBACF-B1ED-4707-9583-381BC5FB31D9/VS2010RTM.htm
 2.1.1 Visual Studio 2010 では、Crystal Reports を個別にインストールする必要がある
Visual Studio 2010 では、Crystal Reports が個別にダウンロードおよびインストールされます。 Crystal Reports プロジェクトまたは Web サイトを作成したり、旧バージョンの Visual Studio または Crystal Reports で作成された既存のプロジェクトまたは Web サイトをインポートしたりする際は、Visual Studio 2010 と互換性のあるバージョンの Crystal Reports をインストールする必要があります。
この問題を解決するには:
Visual Studio 2010 で Crystal Reports を使用している場合は、このリリース ノートの「関連リンク」のセクションにある Crystal Reports のリンクを使用して、Visual Studio 2010 と互換性のあるバージョンの Crystal Reports をダウンロードし、インストールします。このインストールによって、Crystal Reports プロジェクトおよび Web サイトが作成できるようになります。また、Visual Studio 2010 で使用できる既存のプロジェクトおよび Web サイトもアップグレードできます。

SAPのクリレポページTOP
http://scn.sap.com/community/crystal-reports-for-visual-studio



② Visual Studio 2008ソリューションをVisual Studio 2010へ変換
  特殊なものがなければソリューションとプロジェクトのファイルがアップグレードされるだけ
  この場合はクリレポが含まれているので色々と面倒

Visual Studio 2008システム → Visual Studio 2010化1
Visual Studio 2008システム → Visual Studio 2010化2

Visual Studio 2008システム → Visual Studio 2010化3

Visual Studio 2008システム → Visual Studio 2010化4


クリレポが含まれているので下記メッセージが出現
Visual Studio 2008システム → Visual Studio 2010化5


下記画面が出るまでに結構時間かかりました
レポート30本、データセット30本、フォーム27本、クラス15本、プロジェクト3個、で7分程。コード量は面倒だから未計算。ハングしたかと思った。
Visual Studio 2008システム → Visual Studio 2010化6


以下のクリレポ箇所は、VS2010はSAPページからクリレポモジュールをDLしなさいと言ってる
リンクをクリックするとSAPのクリレポページTOPへ飛ぶ
http://scn.sap.com/community/crystal-reports-for-visual-studio
Visual Studio 2008システム → Visual Studio 2010化7

  ※VS2008→VS2012の画面キャプチャは下記の後半にあります
   → http://oyaji-pgm.blogspot.jp/2013/03/visualstudio2012sap-crystal-reports.html

③ セットアッププロジェクトがある場合(私はMSのインストーラーを使っている)、の依存関係に下記のワーニング等表示されても気にせずそのまま無視放置(どれもクリレポ本体内部で使われているよう)
  Flash32_11_4_402_278.ocx
  FlashControlV71.dll
  log4net.dll
Visual Studio 2008からVisual Studio 2010へのアップグレード(Crystal Reportsを含む)1

ちなみに・・・
 Crystal Reports 絡みのエラーが表示された場合、そこでlog4netが関連している様なエラーが表示されることが多いが、確かにVS2010対応のクリレポモジュールでは内部でlog4netが使われているようだが、それは内部の話なので私らには関係ない。従ってそもそもエラーメッセージ自体が不正不明なので気にせず無視する。正しく手順を踏めば最後にレポートが出力出来、エラーも消える。





---↓↓↓ ここからはPCへクリレポを入れたがVS2010でエラーが出る場合の対処に使える ↓↓↓---

⑤ vs2010でクリレポを動作させる

1 .netフレームワーク4.0をclientProfileにしているとクリレポが変なエラーを吐くので決して間違えない事(client profileではダメ)

Visual Studio 2008からVisual Studio 2010へのアップグレード(Crystal Reportsを含む)2



2 エラー 下記2つのエラー対処を行う

  1.「ファイルまたはアセンブリ 'file:///C:\Program Files\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86\dotnet1\crdb_adoplus.dll'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません」

    対処を行う

    ・そもそもdotnet1と言うフォルダは存在しないので、作る
    ・crdb_adoplus.dllを探してdotnet1以下へcopyする
    ・x32版とx64版があるので間違えると何時もの意味不明なエラーが出て嵌る
     PC環境がx32ならx32版をcopy、x64PCならx64版をcopy


  2.「混合モード アセンブリはバージョン 'v2.0.50727' のランタイムに対して作成されており、追加の構成情報がないと 4.0 ランタイムでは読み込めません」

    対処を行う

    ・これは.net4.0を使うようapp.configへ指示すれば良い

    対処 app.configにて

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0"/>

</startup>

   説明
 ・startup属性にuseLegacyV2RuntimeActivationPolicyを付加しtrue(省略時falseになる)
 ・ライタイムバージョンがV4.0になっているか合わせて確認
 ・上記は<>を大文字にしているので注意!本当は半角なのでコピペ時に直す

---↑↑↑ ここからはPCへクリレポを入れたがVS2010でエラーが出る場合の対処に使える ↑↑↑---



⑥ コンパイルで下記ワーニングが出ても無視
  ※わたしは問題がでないと対処しないので、調査されてもOKと思います
  ※ただ上記app.configにてver4指定したので構わないと思いますが・・?)

 警告: 選択した 'SAP Crystal Reports Runtime Engine for .NET Framework 4.0' 項目には 'Microsoft.Net.Framework.2.0' が必要です。[必須コンポーネント] ダイアログ ボックスで足りない必須コンポーネントを選択するか、または足りない必須コンポーネントのブートストラップ パッケージを作成してください。

 警告: 選択した 'SAP Crystal Reports Runtime Engine for .NET Framework 4.0' 項目には 'Microsoft.Data.Access.Components.2.8' が必要です。[必須コンポーネント] ダイアログ ボックスで足りない必須コンポーネントを選択するか、または足りない必須コンポーネントのブートストラップ パッケージを作成してください。



⑦ 特殊なケース
  もしMSセットアッププロジェクトで下記ワーニングが出たら対処する(こちらは対処する)
   ※.net351→.net4.0にした為のワーニング

 警告: プロジェクトの .NET Framework のターゲット バージョンが、.NET Framework 起動条件のバージョン '3.5.21022' と一致しません。.NET Framework 起動条件を更新して、[詳細コンパイル オプション] ダイアログ ボックス (VB の場合) または [アプリケーション] ページ (C#、F# の場合) の .NET Framework のターゲット バージョンと一致するようにしてください。


これでコンパイルが通りデバッグ実行でCrystal Reports が出力され、インストーラーを作成しインストールした場合もCrystal Reports が実行出力される。





ポイントは割と雑な製品Crystal ReportsがSAPに買い取られ更に雑なエラーメッセージを吐く。このエラーメッセージに騙され内容を読み取り対処しようとすると嵌る可能性が大きい。
従って上記で行っても上手く行かない場合はエラーメッセージを信用せずどちらかと言うと無視し、当たり前に考えもう一度手順を踏んでみたり自分なりに手順を考えてみると良いです。








(後日追加分・・・)

めでたくVS2010になったソリューションを開くと当然VS2010が起動するが、その中にあるクリレポを開くと*印がつく場合があります(*がついた方が良い)。そしてコンパイルをすると、下記メッセージが出現しますので、はい、を押す。
SAP Crystal Reports, version for Visual Studio 2010-20121

問題が1つ

レポートを開いて*印がついた時にコンパイルすると上記メッセージが出現し「はい」を押すことで結果的にレポートが新しくなるようですが、レポートを開いてもこの*印がつかない場合がかなりあります。
SAP Crystal Reports, version for Visual Studio 2010-20122
上の画像はプロジェクトで使っているレポートの一覧ですが、□で囲んでいない部分があります。
これは何度レポートを開いても*がつかず、そのためコンパイルしても「レポートがアップグレードしますか」ダイアログが出現しません。と言う事はいつまでたってもレポートが旧構造のままです。

何か開くタイミングで*がついたりつかなかったり。何度開いても*がつかない場合は無理やりレポートを編集してアップグレードさせます。

こんな具合に適当な物を挿入したり、設置してあるオブジェクトをずらしたりして、すると*(変更有マーク)が出現しますよね。*がついた状態でコンパイルすると、「レポートがアップグレードされました」ダイアログが出現するので、アップグレードされます。
SAP Crystal Reports, version for Visual Studio 2010-20123




 ・・・そもそもレポートのアップグレードなんてやっているのかどうか、そんなことはクリレポの内部的な事なので分かりませんが、一応全て「アップグレードしますか?」メッセージを出現させクリレポをアップグレードさせた方が良さそうです。後で不具合でるのも嫌なので・・・

この作業が結構面倒でした。チェックしながら全てアップグレードさせないとならないので。最初は全レポートの1/3ほどしか*が出現しませんでしたし・・・





以上


0 件のコメント:

コメントを投稿