C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

VB2010Expressで64ビットのソフトを開発する方法 [1]

[トピック内 36 記事 (21 - 36 表示)]  << 0 | 1 >>

■83474 / inTopicNo.21)  Re[5]: VB2010Expressで64ビットのソフトを開発する方法
  
□投稿者/ ピラニア (12回)-(2017/03/24(Fri) 15:47:17)


WebSurfer (1184回)-(2017/03/24(Fri) 14:48:07) さんに返信



http://sourcechord.hatenablog.com/entry/20130412/1365789867

それはこのページにあるように

クラスライブラリの話だからではないでしょうか?

いずれにしても
デフォルトだとメモリを2GB以上使えず
AnyCPUかx64に切り替えないと
それ以上の容量を使うことができません。






引用返信 編集キー/
■83475 / inTopicNo.22)  Re[6]: VB2010Expressで64ビットのソフトを開発する方法
□投稿者/ WebSurfer (1185回)-(2017/03/24(Fri) 16:29:38)
No83474 (ピラニア さん) に返信

> クラスライブラリの話だからではないでしょうか?

違うと思いますが・・・

32-bit 版ドライバ(JET とか 2007 の ACE)を使ったアプリを Express 版でコンパイル
して 64-bit OS で動かしたら、ドライバがないというエラーになったので、裏技を使って
x86 でコンパイルして解決したという話を何度か聞いたことがあるので、Express 版のデ
フォルトは Any CPU だと思っています。(その話に間違いなければ、少なくとも x86 で
はない)

ただし、Express 版を持ってない自分は確認できないし、その話は間違いではないかという
可能性は否定しきれませんが。

Express 版のデフォルトが何かはこのスレッドで話を進める上で非常に重要な話だと思いま
すので(デフォルトが Any CPU ならこの先議論は必要ないはずなので)質問者さんの方で
調べていただければと思います。

紹介した「Part 2. .NET Framework 2.0 アプリケーションの 64 ビット対応」の「[Step.
10] 動作モードやヘッダフラグの確認方法」のセクション書いてあるように、Windows SDK
に含まれる CorFlags.exe ツールを利用して PE ヘッダを確認することでわかると思います。

引用返信 編集キー/
■83476 / inTopicNo.23)  Re[7]: VB2010Expressで64ビットのソフトを開発する方法
□投稿者/ なちゃ (200回)-(2017/03/24(Fri) 16:35:20)
vs2010以降では、exeではデフォルトx86になっているので、どちらかというとexpressでも同じの方が納得いきますし、質問者がデフォルトでそうなると言っているのだからそうなのでは?とは思います。

私もexpressの環境はないので確認できませんが、デフォルトが変わったのはAnyCPUによるトラブルをなくすため&そもそもexeてデフォルトAnyCPUにするのは現実的にあまり適切でないという判断があったためなので、expressだけAnyCPUのままというのはその辺も含めると考えにくいです。
引用返信 編集キー/
■83478 / inTopicNo.24)  Re[8]: VB2010Expressで64ビットのソフトを開発する方法
□投稿者/ 魔界の仮面弁士 (1215回)-(2017/03/24(Fri) 16:46:36)
No83468 (WebSurfer さん) に返信
>>VB2010Expressだとデフォルトの設定がx86になっています。
> 以下の記事にある "Visual C# Express などの Visual Studio Express Edition では、
> 特定の種類の CPU 向けの最適化をサポートしていません。" というのは Any CPU しか
> サポートしていませんという意味だと思っていたのですが、違うのかしら?


VS2008 Express
 ・デフォルトは Any CPU
 ・AnyCPU/x64/x86/Itanium を選択可能

VS2010 Express
 ・デフォルトは x86
 ・AnyCPU/x64/x86/Itanium も選択可能

VS2012 Express 以降
 ・デフォルトは Any CPU(32ビットの優先)
 ・Itanium はサポートされない(AnyCPU/x64/x86 の 3 種)
 ・AnyCPU の場合はさらに「32 ビットの優先」を On/Off 可能



コンパイラ自体は、プラットフォームとして
 x86
 x64
 Itanium
 Arm
 AnyCPU
 AnyCPU32BitPreferred
をサポートしていますが、Express から扱えるのは一部だけですね。

ちなみに AnyCPU32BitPreferred は、.NET 4.5 から追加された
ARM 上でも動作させることが可能なモードであり、VS からは
「Any CPU (32 ビットの優先)」とも表記されますが、
今回は VB2010 Express なので関係ありません。CorFlags.exe も同様。
引用返信 編集キー/
■83479 / inTopicNo.25)  Re[5]: VB2010Expressで64ビットのソフトを開発する方法
□投稿者/ 魔界の仮面弁士 (1216回)-(2017/03/24(Fri) 17:04:44)
2017/03/24(Fri) 17:08:54 編集(投稿者)

No83472 (ピラニア さん) に返信
> 一方で、AnyCPUやx64に切り替えた状態だと

デフォルトが x86 で、そこから AnyCPU や x86 を追加されたかと思いますが、
念のため、どういう手順で設定したかを順を追って説明してみていただけますか?



> どちらが実行されるかは
> 「構成」によって決まります。

当初の質問では、『デバッグしかできない状態かビルドしかできない状態』と
仰っていましたよね。ということは、Release 時は(2) しかできず、
Debug 時は (5) しか行えない状態だったと思うのですが、実際には違うのですか?



> Ctrl+F5を押してもF5を押しても
> (3)デバッグ構成でビルドしたものをデバッガにアタッチせずに実行する
> (4)リリース構成でビルドしたものをデバッガにアタッチせずに実行する
> あるいは
> (5)デバッグ構成でビルドしたものをデバッグ実行する
> (6)リリース構成でビルドしたものをデバッグ実行する

ということは、

Debug & Ctrl+F5 だと (3)
Release & Ctrl+F5 だと (4)
Debug & F5 だと (5)
Release & F5 だと (6)

になるというわけですらなく、

Debug だと、Ctrl+F5 でも F5 でも (3)(5) のいずれか
Release だと、Ctrl+F5 でも F5 でも (4)(6) のいずれか

ということでしょうか。何だか混乱してきました。


「構成」で何を選択したときに、どちらが実行されることになるのかを、
端折らずに説明してもらえないでしょうか。

また、Debug/Release のどちらの EXE が実行されているかを、
どのようにして確認しているのかも、あわせて教えてください。
引用返信 編集キー/
■83480 / inTopicNo.26)  Re[6]: VB2010Expressで64ビットのソフトを開発する方法
□投稿者/ ピラニア (13回)-(2017/03/24(Fri) 17:25:05)
No83479 (魔界の仮面弁士 さん) に返信


> デフォルトが x86 で、そこから AnyCPU や x86 を追加されたかと思いますが、
> 念のため、どういう手順で設定したかを順を追って説明してみていただけますか?

http://ykmtblog.hatenablog.jp/entry/2012/06/05/205304

質問内容に書いた通り、上記のページの手順をそのまま実行しました。


あと、落ち着いて再度検証してみましたが、


構成がReleaseになっている状態で

Ctrl+F5 および F5 だと
(4)リリース構成でビルドしたものをデバッガにアタッチせずに実行する
が実行され、


構成がDebugになっている状態で

Ctrl+F5 だと
(1)デバッグ構成でビルドする

F5 だと
(5)デバッグ構成でビルドしたものをデバッグ実行する
が実行されます。

何度か検証しましたが、上記の内容が正しいです。


> また、Debug/Release のどちらの EXE が実行されているかを、
> どのようにして確認しているのかも、あわせて教えてください。

デバッグ構成か、Release構成かは
exeファイルが出力されるフォルダーから判断しています。

リリース構成だと
bin\x64\Release\
デバッグ構成だと
bin\x64\Debug\
に出力されるように設定してありますので、そこから判断できます。

デバッガにアタッチするかどうかはブレイクポイントを設定して
そこで引っかかるかどうかで判断しています。



構成を変更するためには、

ソリューションのプロパティ→構成マネージャーと巡ってから
アクティブソリューション構成
を変更する必要があるため、非常に面倒です。


そういえば、1つ説明するのを忘れていましたが、
このデバッグかリリースかどちらかでしか
ビルドできなくなる現象に関してですが、
x86に設定してあったとしても

オプションの
・ビルドの構成の詳細を表示
・常にソリューションを表示
にチェックが入っていると、この現象が起きてしまいます。

x64やAnyCPUに設定してから、
これらのチェックを外しても、この現象は改善されません。
x86に戻してから、これらのチェックを外して
初めて元の正常な状態に戻すことができます。



引用返信 編集キー/
■83481 / inTopicNo.27)  Re[6]: VB2010Expressで64ビットのソフトを開発する方法
□投稿者/ 魔界の仮面弁士 (1217回)-(2017/03/24(Fri) 17:32:46)
No83479 (魔界の仮面弁士) に追記
>>一方で、AnyCPUやx64に切り替えた状態だと
> デフォルトが x86 で、そこから AnyCPU や x86 を追加されたかと思いますが、
> 念のため、どういう手順で設定したかを順を追って説明してみていただけますか?

もしかして、64 bit 向けのプラットフォームを追加作成する際に、

  新しいプラットフォーム:x64
  設定のコピー元:<空>

のように指定されていないでしょうか。だとしたら、

  新しいプラットフォーム:x64
  設定のコピー元:x86

と設定するようにしてみてください。


もし、既に前者の設定で作られたプロジェクトがある場合は、
No83467 にも書きましたように、『コンパイラの詳細設定』ダイアログにて、
「デバッグ情報を作成」の設定を確認してみてください。

その設定が None であれば、None 以外にすることで解決するかもしれません。

既に None 以外に設定されているようであれば、ビルド後のフォルダ内に
*.exe だけでなく *.pdb ファイルも存在するかどうかを確認してみてください。

*.pdb があるのに、引き続き問題が生じている場合には、
*.exe と *.pdb の更新時刻(≠作成時刻)が一致しているかも確認してみてください。
引用返信 編集キー/
■83482 / inTopicNo.28)  Re[7]: VB2010Expressで64ビットのソフトを開発する方法
□投稿者/ ピラニア (14回)-(2017/03/24(Fri) 17:42:12)
デフォルトの設定が
  新しいプラットフォーム:x64
  設定のコピー元:x86

になっているので、こちらの設定でしか試したことがありません。

 よろしくお願いいたします。
引用返信 編集キー/
■83483 / inTopicNo.29)  Re[7]: VB2010Expressで64ビットのソフトを開発する方法
□投稿者/ 魔界の仮面弁士 (1218回)-(2017/03/24(Fri) 17:52:15)
2017/03/24(Fri) 18:04:47 編集(投稿者)

No83480 (ピラニア さん) に返信
> 構成を変更するためには、
> ソリューションのプロパティ→構成マネージャーと巡ってから
> アクティブソリューション構成
> を変更する必要があるため、非常に面倒です。

Express ではないエディション……たとえば VS2010 Ultimate であっても、
初回起動時の設定画面で「Visual Basic 開発設定」を選択していると、
ツールバー上には、x86/x64/AnyCPU の構成を切り替える選択肢が表示されず、
わざわざ構成マネージャーから変更することになってしまいます。

「Visual Basic 開発設定」以外、たとえば「全般的な開発設定」なら大丈夫なのですけれどね。


この場合、下記のようにすると x86/x64/AnyCPU の構成を
変更するためのドロップダウンをツールバーに追加できます。
http://www.atmarkit.co.jp/fdotnet/dotnettips/750vbconfigsolution/vbconfigsolution.html


上記 URL は VS2005/2008 のものですが、VS2010 でも同様に、
ツールバーのカスタマイズで、任意のツールバー(たとえば[標準])に対して
[コマンドの追加]ボタンにて、[ビルド]-[ソリューション プロットフォーム]の
ドロップダウンを追加することができるかと思います。

ただし、VS2010 Express については分かりません。
Express のみにある [ツール]-[設定]-[上級者用の設定] によっても
変化するかもしれませんが未確認です。
引用返信 編集キー/
■83484 / inTopicNo.30)  Re[9]: VB2010Expressで64ビットのソフトを開発する方法
□投稿者/ WebSurfer (1186回)-(2017/03/24(Fri) 17:52:39)
No83478 (魔界の仮面弁士 さん) に返信

> VS2010 Express
>  ・デフォルトは x86
>  ・AnyCPU/x64/x86/Itanium も選択可能

情報をありがとうございました。

選択可能ということは、No83468 の MSDN ライブラリの記述「特定の種類の CPU 向け
の最適化をサポートしていません」や stackoverflow の「Any CPU を x86 にしたい」
というのは何だったんだろうという感じです。何か誤解していたのかしら?


No83474 (ピラニア さん) に返信

失礼しました。デフォルトは Any CPU だとばかり思い込んでました。

引用返信 編集キー/
■83485 / inTopicNo.31)  Re[8]: VB2010Expressで64ビットのソフトを開発する方法
□投稿者/ 魔界の仮面弁士 (1219回)-(2017/03/24(Fri) 17:53:33)
No83482 (ピラニア さん) に返信
> になっているので、こちらの設定でしか試したことがありません。
>  よろしくお願いいたします。

pdb の状態はどうなっていましたか?
引用返信 編集キー/
■83486 / inTopicNo.32)  Re[9]: VB2010Expressで64ビットのソフトを開発する方法
□投稿者/ ピラニア (15回)-(2017/03/24(Fri) 18:33:05)
No83485 (魔界の仮面弁士 さん) に返信


デバッグの情報作成はFullになっています。

pdbファイルはデバッグ構成の時には出力されますが、
Release構成では出力されません。

あと
> ツールバー上には、x86/x64/AnyCPU の構成を切り替える選択肢が表示されず、
> わざわざ構成マネージャーから変更することになってしまいます。

何度も説明しているように
変更したいのはx86/x64/AnyCPUではなく
デバッグ、リリースの切り替えです
 
引用返信 編集キー/
■83492 / inTopicNo.33)  Re[10]: VB2010Expressで64ビットのソフトを開発する方法
□投稿者/ 魔界の仮面弁士 (1220回)-(2017/03/24(Fri) 20:11:30)
2017/03/24(Fri) 20:19:37 編集(投稿者)

No83486 (ピラニア さん) に返信
> pdbファイルはデバッグ構成の時には出力されますが、
> Release構成では出力されません。

それが直接の原因のようですね。

Release 構成であっても pdb が出力されるようになれば
Release 構成時にデバッグできるようになるのでしょうけれど。


VB2010Express 日本語版固有の問題なのかもしれませんが、
同ソフトがインストールされた検証機が手元に無いので、
こちらでは確認できません。
オフライン版ISO や同 SP1 の URL もことごとくリンク切れで…。


> デバッグの情報作成はFullになっています。

[コンパイル]タブの上部にある「構成」および「プラットフォーム」が
"アクティブ (Relase)"、"アクティブ (x64)" の状態で、
"Full" が指定されている状態なのでしょうか。

だとしたら、設定は間違って無さそうに思えます。
Express 以外でも再現する事象なら、具体的な対策も打てそうなのですが。

Express のメニューを上級者設定モードにした上で、オプション設定の
[プロジェクトおよびソリューション]-[ビルド/実行]あたりに、
[MSBuild プロジェクト ビルドの出力の詳細]という
ドロップダウンが用意されていないでしょうか。

もしあれば、それを[最小]から[標準]にした状態で「リビルド」して、
出力ウィンドウに表示される内容を確認してみてください。

Debug 構成・Release 構成ともに、「CoreCompile:」エントリにて、
Vbc.exe に、下記のいずれかのオプションが渡されているか、それとも
/debug 指定そのものが無い状態か調べてみて下さい。
 /debug+
 /debug-
 /debug:full
 /debug:pdbonly


あるいは、Express に MSBuild のビルド状況を確認する機能が無さそうなら、
実験用に、Hello World! と表示するだけの小さなコンソールアプリケーションを
x64 設定のソリューション一式として用意し、そこから実行可能な
バイナリ(bin や obj フォルダ)を除外したソースファイルのみを
ZIP ファイルにまとめて、どこか(OneDrive 等)にアップロードして
いただけないでしょうか。
※バイナリを含んでいても良いですが、それだとセキュリティ検査が手間なので。


仮に VS 本体側の問題ではなく、.sln や .vbproj 側の設定によるものなら、
Express ではないエディションであっても、同じ現象を再現できるかと
思いますので、そちらで作成された実際のソースファイルがあれば、
Express 以外の利用者とも情報を共有できるかと思いますし、たとえ
ソースに問題が無かったとしても、問題の切り分けの一助になりそうです。


> 何度も説明しているように
> 変更したいのはx86/x64/AnyCPUではなく
> デバッグ、リリースの切り替えです

説明不足で失礼しました。
ソリューション プラットフォームの方しか説明していないないですね…。

構成を変更するための「構成マネージャー」を呼び出すのが
面倒だと書かれていたので、
Debug/Relase の「ソリューション 構成」と
x86/x64/AnyCPU の「ソリューション プラットフォーム」の両方が
ツールバー上にあれば、その手間を軽減できるのではないか、という意図です。

もっとも、構成マネージャーの呼び出しが面倒というのは
そもそも話の本筋では無いでしょうから、蛇足情報と捕えて下さい。


保証はできませんが、pdb が正しく出力されるようにさえなれば、
不本意な切り替えを行わずに済むと思います……多分?
引用返信 編集キー/
■83495 / inTopicNo.34)  Re[11]: VB2010Expressで64ビットのソフトを開発する方法
□投稿者/ ピラニア (16回)-(2017/03/24(Fri) 21:18:45)
No83492 (魔界の仮面弁士 さん) に返信


ありがとうございます。
よく分からないので、VisualStudio2015をインストールしてみました。
こちらで少し様子を見てみます。

表題の質問内容が異なって恐縮なのですが
質問にお答えいただけないでしょうか?

例えば、
Dim file As String = "eee"
というコードがあり、fileというところにカーソルを合わせるとします。
するとVB2010だと0.2秒ぐらいですぐに同じコード内のfileという文字がグレー色に着色されます。



一方で、VB2015だと、同じ操作を行っても
1〜2秒くらい遅延があってから他のfileという文字に着色がなされます。

この遅延をなくすことはできないのでしょうか?
仕様なのでしょうか?

 
引用返信 編集キー/
■83496 / inTopicNo.35)  Re[12]: VB2010Expressで64ビットのソフトを開発する方法
□投稿者/ ぐっさん (1回)-(2017/03/24(Fri) 21:58:59)
別の質問は別のスレッドを立ててください。
引用返信 編集キー/
■83497 / inTopicNo.36)  Re[13]: VB2010Expressで64ビットのソフトを開発する方法
□投稿者/ ピラニア (17回)-(2017/03/24(Fri) 22:03:24)
No83496 (ぐっさん さん) に返信
> 別の質問は別のスレッドを立ててください。

承知しました
いったん、この質問は締め切らせていただきます

どうもありがとうございました

引用返信 編集キー/

このトピックをツリーで一括表示

<前の20件
トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ