vb.net2005からvb.net2015への変換について

タグの編集
投稿者 ねぼすけ  (社会人) 投稿日時 2016/1/29 07:49:16
vb.net2005で作成した「○△×.vbproj」をクリックするとvb.2015に変換されますが、移行レポート(変換レポート)で
..\○△×.vbproj: このプロジェクトの種類の基になっているアプリケーションが見つかりませんでした。詳細情報については、このリンクを参照してください: http://go.microsoft.com/fwlink/?LinkId=628321&projecttype=54435603-DBB4-11D2-8724-00A0C9A8B90C

○△×.vbproj: このプロジェクトは .NET Framework 2.0 または 3.0 に対応しています。プロジェクトで新しい .NET Framework を必要とするアセンブリを使用すると、ビルドに失敗します。[プロジェクト] メニューの [プロパティ] をクリックし、[.NET Framework] ボックスの一覧で新しいバージョンを選択することにより、.NET Framework のバージョンを変更できます。Visual Basic では、これは [コンパイル] タブの [詳細コンパイラ オプション] ボタンをクリックすると表示されます。
また、
○△×.sln: このプロジェクトを Visual Studio 2015、Visual Studio 2013、Visual Studio 2012、および Visual Studio 2010 SP1 で開けるように、プロジェクトの動作には影響しない非機能的な変更をプロジェクトに加える必要があります。
と表示されます。これらを解決すると、vb.net2015でプログラムに改良を加えることができると思うのですが、方法がよくわかりません。宜しくお願いします。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2016/1/29 10:07:42
2005→2015 の移行は未経験ですが、レポートの記載内容から読み取れる範囲で解説してみます。


> このプロジェクトの種類の基になっているアプリケーションが見つかりませんでした。
> http://go.microsoft.com/fwlink/?LinkId=628321&projecttype=54435603-DBB4-11D2-8724-00A0C9A8B90C

ProjetType が {54435603-DBB4-11D2-8724-00A0C9A8B90C} 
ということは、「セットアップ プロジェクト」をお使いでしょうか。

であれば、 visualstudiogallery.msdn.microsoft.com より
 「Microsoft Visual Studio 2015 Installer Projects extension」
などをアドイン追加できますので、そちらで再作成してみてください。
(要 Visual Studio 2015 Professional 以上)

「InstallShield Limited Edition」という手もありますが、セットアップ プロジェクトからの
移行であれば、Installer Projects extension の方が移行しやすいと思います。


> このプロジェクトは .NET Framework 2.0 または 3.0 に対応しています。
> プロジェクトで新しい .NET Framework を必要とするアセンブリを使用すると、ビルドに失敗します。

2005 の場合、ターゲットフレームワークは 2.0 固定でしたが(もしくは Compact Framework)、
2008 以降では、ターゲット フレームワークを選択できるようになっています。

それゆえ、今回移行したプロジェクトは、従来の .NET Framework 2.0 向けの
プロジェクトのまま移植されています。もし、このプロジェクトから、.NET 4 向けの DLL を
参照設定した場合、ビルドに失敗することになりますので、そのための警告ですね。
.NET 2.0 世代のアセンブリのみを用いて開発する分には、何の問題ありません。


もしも .NET 4 以降、たとえば 4.6 向けのアセンブリを使った開発が必要な場合、
当然ながら実行環境にも、該当するバージョンの .NET Framework が必要ですし、
プロジェクト側も修正が必要になります。その場合は、レポートの警告メッセージに従い、
そのプロジェクトのターゲット フレームワークのバージョンを変更してみてください。


> プロジェクトの動作には影響しない非機能的な変更をプロジェクトに加える必要があります。

見たことの無いメッセージですが、恐らくこれは “プロジェクトラウンドトリップ” のことだと思います。

VB4 と VB5 がそうであったように、新しいバージョンの Visual Studio に移行すると、
そのプロジェクトは、以前のバージョンで使用できなくなっていたのですが、
2012 以降(正確には 2010 SP1 以降)においては、以前のバージョンでも開けるような
配慮が組み込まれています。

とはいえ、そもそも今回の元プロジェクトは 2005 であったため、変換後のプロジェクトが
2005 で使えるようになるわけではありません。2015 で開くことさえできれば良いのですから、
この警告については無視してしまっても構わないと思いますよ。
投稿者 ねぼすけ  (社会人) 投稿日時 2016/1/29 10:29:15
> visualstudiogallery.msdn.microsoft.com より
 「Microsoft Visual Studio 2015 Installer Projects extension」
などをアドイン追加できますので、そちらで再作成してみてください。
(要 Visual Studio 2015 Professional 以上)

ということは、VB2015Communityでは、できないということでしょうか?
また、Setupプロジェクトは削除しました。それから、「開始 ▶ 」してみたのですが、以前の…
ちょっと待ってください。あれ、ビルドしました。何か変だな。またあとで、投稿します。


投稿者 ねぼすけ  (社会人) 投稿日時 2016/1/29 11:13:01
ビルドされたのは、根気よくコードやフォームのコントロールを貼り付けたもので行ってました。(笑)
再質問です。
> visualstudiogallery.msdn.microsoft.com より
> 「Microsoft Visual Studio 2015 Installer Projects extension」
>などをアドイン追加できますので、そちらで再作成してみてください。
>(要 Visual Studio 2015 Professional 以上)

ということは、VB2015Communityでは、できないということでしょうか?
また、Setupプロジェクトは削除しました。それから、「開始 ▶ 」してみたのですが、「ビルドエラーが発生しました。続行して、最後に成功したビルドを実行しますか?」で、「はい」を選択すると動きます。ビルドは一度も成功したことがないのに…。
投稿者 YuO  (社会人) 投稿日時 2016/1/29 11:40:32
> ということは、VB2015Communityでは、できないということでしょうか?
Communityでも利用可能ですね。
[拡張機能と更新プログラム]で「installer」をキーにオンラインを検索すると,現時点で先頭に出てきました。

ProfessionalにあってCommunityにない機能は,CodeLensくらいだったはずです。

> また、Setupプロジェクトは削除しました。それから、「開始 ▶ 」してみたのですが、「ビルドエラーが発生しました。続行して、最後に成功したビルドを実行しますか?」で、「はい」を選択すると動きます。ビルドは一度も成功したことがないのに…。

旧バージョンで作成したバイナリが残っていたりしませんか。
リビルド等で,一度バイナリが削除されれば実行できなくなるかと思います。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2016/1/29 12:40:45
Community は業務で利用できませんが、その点は大丈夫でしょうか。

> ということは、VB2015Communityでは、できないということでしょうか?

Microsoft Visual Studio 2015 Installer Projects 1.0 は、
Community でもダウンロードはできますが、導入時に怒られます。
※現在は公開中止

Microsoft Visual Studio 2015 Installer Projects 2.0 であれば、
Community でも利用可能です。
https://visualstudiogallery.msdn.microsoft.com/f1cc3f3e-c300-40a7-8797-c509fb8933b9
投稿者 shu  (社会人) 投稿日時 2016/1/29 13:55:14
> ということは、VB2015Communityでは、できないということでしょうか?
> また、Setupプロジェクトは削除しました。それから、「開始 ▶ 」してみたのですが、「ビルドエラーが発生> しました。続行して、最後に成功したビルドを実行しますか?」で、「はい」を選択すると動きます。ビルド> は一度も成功したことがないのに…。

このメッセージが表示されて『はい』をクリックする意味はないので
『はい』をクリックして動作するのは無視してエラー一覧に表示されている
であろうエラーの対処をすべきです。エラーチェックするだけなら
開始せずにプロジェクトのリビルドをされた方がよいです。
投稿者 ねぼすけ  (社会人) 投稿日時 2016/1/29 14:17:37
ビルドして、表示されたのは

1>------ ビルド開始: プロジェクト:1次方程式指南, 構成:Debug Any CPU ------
1>C:\Program Files\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(3615,5): error MSB3482: 署名中にエラーが発生しました: SignTool.exe が見つかりません。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

私には意味がわかりません。どうしたもんかと…。
投稿者 shu  (社会人) 投稿日時 2016/1/29 16:32:07
SignTool.exeは署名関連のものなので
一旦、署名設定をはずしてみてはどうでしょう?
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2016/1/29 17:57:12
プロジェクトのプロパティを開いたときに、「署名」タブにて
「ClickOnceマニフェストに署名する」がチェックされていないでしょうか。

もしあれば、それを一度解除してからビルドしてみてください。
(ちなみに、厳密署名のチェックボックスの方では sn.exe というツールが使われます)


なお、Visual Studio 2015 の「標準」インストールでは、ClickOnce 関連のコンポーネントが
インストールされません。もしも標準インストールを実施していた場合には、
コントロールパネルの「プログラムと機能」から VS2015 のインストーラーを起動し、
改めてClick Once関連のコンポーネントを導入してみてください。
投稿者 ねぼすけ  (社会人) 投稿日時 2016/1/29 18:19:22
プロジェクトのプロパティの「署名」タブの「ClickOnce マニフェストに署名する」のチェックをはずしてみました。するとビルドを正常に終えることができました。その「ClickOnce…」の意味することはわからないので気持ち悪いですが、取りあえずは解決しました。それで、VB.NET2015Community、直に作成したプログラムの「署名」タブを見てみましたら、「ClickOnce…」はチェックされていませんでした。では、そのことを気にせずにプログラムの改変を続けて良いということですね。
 魔界の仮面弁士さんshuさんYuOさん、ありがとうございました。
……、今回のことで、さらに疑問がわいてきました。魔界の仮面弁士さんからのアドバイスで、Microsoft Visual Studio 2015 Installer Projects 2.0 をインストールしましたが、…ということはVB.NET2015Communityにはセットアッププロジェクトが搭載されていないということですね。必須コンポーネントの選択欄には「Windowsインストーラー4.5」があるにもかかわらず、セットアッププロジェクトがないのでしたら、皆さんはどうやってSetupプログラムを作成しているのでしょうか(Releaseのexeファイルのみならず、他のファイルも同梱する場合)。セットアッププロジェクト以外にも作成する方法があるのでしょうか、それとも別ソフトのインストーラで作成しているのでしょうか。重ねての質問、すみません。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2016/1/30 14:50:48
> その「ClickOnce…」の意味することはわからないので気持ち悪いですが、
2005 以降で使える配布形態です。バージョンによって多少の違いはありますが、
基本機能はどのバージョンでも一緒なので、Web で検索してみてください。
http://www.atmarkit.co.jp/ait/articles/0601/18/news112.html


アプリケーションを更新した際に、自動バージョンアップする機能があったり、
依存コンポーネントを、必要になった機能だけを部分インストールするなど、
便利な機能がそろっています。

そのかわり、Per-machine インストールではなく、per-user インストールであるため、
Program Files 配下ではなく、ユーザーフォルダへのインストールになるなどの制限があります。


> ということはVB.NET2015Communityにはセットアッププロジェクトが搭載されていないということですね。
標準機能の一部ではありますが、ダウンロード提供という形になっています。
(ちなみに Visual Studio 6.0 における Visual Studio Installer もそうでした)

Install Shield Limited Edition であれば、最初からプロジェクトに含まれているのでは無かったかな…?
まぁ、既定では有効化されていないので、ダウンロード入手が必要だという点では一緒なのですが。



そもそも最近の Visual Studio は、標準機能のいくつかをダウロード形式で後追いで提供するようになっています。
これは、各機能を部品化することで、個別のバージョンアップをやりやすくするためという意味も
ありますし、また、後追いで機能を追加していくことで、製品のリリースサイクルを早めるという
効果もあります。(それらを標準機能の一部と呼ぶのが適切なのかどうかは判断が分かれそうですが)


参考までに、Visual Studio の各製品のリリース時期を年表に纏めてみました。
端折っている箇所もありますし、米国時間と日本時間のズレがあるかもしれませんが、
最近の Visual Studio は、製品のリリース速度が非常に早くなっており、
マイナーバージョンアップも数ヶ月単位で行われていることが分かるかと思います。

1998/08/10  Visual Studio 6.0 Enterprise Edition RTM
1998/09/02  Visual Studio 6.0 Professional Edition RTM
1998/10/27  Visual Studio 6.0 Service Pack 1
1999/01/21  Visual Studio 6.0 Service Pack 2
1999/05/21  Visual Studio 6.0 Service Pack 3
2000/06/15  Visual Studio 6.0 Service Pack 4
2001/02/26  Visual Studio 6.0 Service Pack 5
2002/04/15  Visual Studio .NET 2002 RTM(Professional/Academic/Enterprise Architect/Enterprise Developer)
2003/07/10  Visual Studio .NET 2003 RTM(Professional/Academic/Enterprise Architect/Enterprise Developer)
2004/03/29  Visual Studio 6.0 Service Pack 6
2005/03/08  Visual Studio .NET 2002 Service Pack 1
2006/01/14  Visual Studio 2005 Express Edition
2006/01/27  Visual Studio 2005 RTM(Standard/Professional)
2006/12/14  Visual Studio 2005 Service Pack 1
2008/02/19  Visual Studio 2005 RTM(Express/Standard/Academic/Professional)
2008/08/11  Visual Studio 2005 Service Pack 1 / Express Service Pack 1
2010/06/29  Visual Studio 2010 RTM(Express/Professional/Professional with Embedded/Premium/Ultimate)
2010/07/11  Visual Studio Team Explorer Everywhere 2010
2011/03/08  Visual Studio 2010 Service Pack 1
2012/10/31  Visual Studio 2012 RTM(Premium/Ultimate)
2012/11/26  Visual Studio 2012 Update 1
2013/04/04  Visual Studio 2012 Update 2
2013/04/26  Visual Studio 2012 Update 3
2013/10/17  Visual Studio 2013 RTM
2013/11/12  Visual Studio 2012 Update 4
2014/01/15  Visual Studio 2013 RTM(Express/Professional/Premium/Ultimate)
2014/01/20  Visual Studio 2013 Update 1
2014/04/02  Visual Studio 2013 Update 2 Build 2014
2014/05/12  Visual Studio 2013 Update 2 RTM
2014/07/02  Visual Studio 2013 Update 3 リリース候補版
2014/08/04  Visual Studio 2013 Update 3 RTM
2014/10/16  Visual Studio 2013 Update 4 リリース候補版
2014/12/11  Visual Studio 2013 Update 4 RTM
2014/11/12  Visual Studio Community 2013 RTM
2015/07/20  Visual Studio Team Foundation Server 2013 Update 5 RTM
2015/07/20  Visual Studio Team Foundation Server 2015 リリース候補版
2015/07/20  Visual Studio 2015 RTM(Community/Professional/Enterprise)
2015/07/20  Visual Studio 2013 Update 4 RTM
2015/07/20  Visual Studio 2015 RTM
2015/08/21  Visual Studio 2012 Update 5
2015/11/30  Visual Studio Team Foundation Server 2015 Update 1
2015/11/30  Visual Studio 2015 Update 1


※上記を鑑み、たとえば Visual Studio 2013 Update 3 の事を、VS2013.3 と略すことがあります。


VB6 当時の Service Pack は、不具合修正が主体であり、機能追加は補助的なものでしたが、
近年の Update は、不具合修正ももちろん含まれますが、主体は機能追加となっています。

細かい機能強化が随時行われていることから、それに付随する機能も後付け提供となるわけですね。
これは Visual Studio に限った話ではなく、Windows 10 などにも言えることかと。
投稿者 (削除されました)  () 投稿日時 2016/1/30 14:51:06
(削除されました)
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2016/1/30 14:52:40
> それとも別ソフトのインストーラで作成しているのでしょうか。

うちの場合、自社でデータセンターを有しているので、主機能は Web Service として構築し、
ユーザー向けには、exe を ClickOnce で提供することが多いですね。ClickOnce なら、
依存コンポーネント(帳票ツールとか、ローカルキャッシュデータベース等)も配置できます。

配置時の署名に際しては、認証機関から購入したコードサイニング証明書を使うこともあれば、
自社作成の証明書を使うこともあります。また、Web サービスへのアクセスは、基本的には
SSL で通信させていますが、個人情報を扱うようなアプリケーションの場合には、
それに加えてクライアントSSL証明書を導入しているケースもあります。


ただし Web Service を必要としない、クライアントサーバー型やスタンドアロン環境に対しては、
業務開発ということで、有償の InstallShield を使うケースもあります。
また、その無償版の InstallShield Limited Edition も利用可能ですね(私は使った事が無いですが)。
ただ、最近のコンポーネントは Side-by-side で配置できるものばかりなので、
ユーザーが PC に不慣れな場合を除いては、大抵は XCOPY 配置で済ませています。

無償ツールと言えば、WiX/WiXEdit あたりが有名ですね。
これも Windows Installer をベースとしています。
http://wix-tutorial-ja.github.io/

(注) "WiX" と "Wix" を混同しないようご注意ください。
 前者は配置パッケージツールの名前ですが(Windows Installer XML toolset)、
 後者は Webサイトを構築するためのクラウド型 CMS の名前です。 
投稿者 (削除されました)  () 投稿日時 2016/1/30 17:07:04
(削除されました)
投稿者 ねぼすけ  (社会人) 投稿日時 2016/1/30 17:08:13
最終的に、魔界の仮面弁士さんのおっしゃられた「Click Once」関連のコンポーネントを導入し、ソリューション構成(?)を「Release」から「Debug」に変更することで、無事VB.NET2005からVB.NET2015に移行させることができるようになりました。ありがとうございます。
また、色々な情報もいただきました。「ClickOnce」の記事もちらっと見ましたが、VB熟達者さんたちには当たり前の知識なんですね。「InstallShield Limited Edition」や「WiX/WiXEdit」も調べてみたいと思います。