QA@IT
«回答へ戻る

一部追記

1183
 
 > ということは、インストールするACEプロバイダと合わせないといけないということですよね?
 
-対象のフレームワークを .NET 4 にするのであれば、プラットフォームターゲットを x86 にして、ACE プロバイダは今使っている 32-bit 版にしておけば、OS が 32/64-bit のいずれでも動くはずです(64-bit OS の場合は WOW64 上で動く)。
+対象のフレームワークを .NET 4 にするのであれば、プラットフォームターゲットを x86 にして、ACE プロバイダは今使っている 32-bit 版にしておけば、OS が 32/64-bit のいずれでも動くはずです(64-bit OS の場合は WOW64 上で動く。アプリを Any CPU または x64 とし ACE を 64-bit 版にしたりすると 32-bit OS では動かなくなるので止めた方がいいと思います)。
 
 .NET 4.5 なら今のままの設定にしておいても 32/64-bit OS 両方に対応できると思います。(個人的には Any CPU ではなく x86 にしておくべきと思いますが)
 

自分が使っているのは VS2010 なので知りませんでしたが、「32ビットの優先」というのは Visual Studio 2012 から追加された .NET 4.5 のみで使用できる新機能のようですね。(おかげさまで一つ利口になりました)

[ビルド] ページ (プロジェクト デザイナー) (C#)
https://msdn.microsoft.com/ja-jp/library/kb4wyys2.aspx

上記のページによると "チェック ボックスがオンの場合、アプリケーションは、Windows の 32 ビット バージョンおよび 64 ビット バージョンで 32 ビット アプリケーションとして実行されます" とのことで、かつ .NET 4 にはその機能はないということです。

(ちなみに、.NET 4.5 の Any CPU + 「32ビットの優先」と、.NET 4 以下の x86 は何が違うんだと思って調べてみましたが、前者は ARM の Windows 環境でも動くという点が違うという話でした)

そうすると質問者さんのケースと話の辻褄が合いますね。

(1) .NET 4.5 で Any CPU として作ったアプリは、「32ビットの優先」の機能により、Windows8.1 64-bit OS の WOW64 上で 32-bit で動いていて、ACE プロバイダも 32-bit 版なので問題なかった。

(2) .NET 4 で Any CPU として作ったアプリは、Windows8.1 64-bit OS 上で 64-bit で動いていていたが、ACE プロバイダが 32-bit 版なのでエラーとなった。

ということは、インストールするACEプロバイダと合わせないといけないということですよね?

対象のフレームワークを .NET 4 にするのであれば、プラットフォームターゲットを x86 にして、ACE プロバイダは今使っている 32-bit 版にしておけば、OS が 32/64-bit のいずれでも動くはずです(64-bit OS の場合は WOW64 上で動く。アプリを Any CPU または x64 とし ACE を 64-bit 版にしたりすると 32-bit OS では動かなくなるので止めた方がいいと思います)。

.NET 4.5 なら今のままの設定にしておいても 32/64-bit OS 両方に対応できると思います。(個人的には Any CPU ではなく x86 にしておくべきと思いますが)

なお、ACE プロバイダは同一 PC 上で 32/64-bit 版の共存ができないそうなので注意してください(ウラワザ的手法はあるようですが)。

また、先にも書きましたが Office/Excel の 32/64-bit は関係ないです。(Office/Excel を動かすわけではないので)

自分が使っているのは VS2010 なので知りませんでしたが、「32ビットの優先」というのは Visual Studio 2012 から追加された .NET 4.5 のみで使用できる新機能のようですね。(おかげさまで一つ利口になりました)

[ビルド] ページ (プロジェクト デザイナー) (C#)
https://msdn.microsoft.com/ja-jp/library/kb4wyys2.aspx

上記のページによると "チェック ボックスがオンの場合、アプリケーションは、Windows の 32 ビット バージョンおよび 64 ビット バージョンで 32 ビット アプリケーションとして実行されます" とのことで、かつ .NET 4 にはその機能はないということです。

(ちなみに、.NET 4.5 の Any CPU + 「32ビットの優先」と、.NET 4 以下の x86 は何が違うんだと思って調べてみましたが、前者は ARM の Windows 環境でも動くという点が違うという話でした)

そうすると質問者さんのケースと話の辻褄が合いますね。

(1) .NET 4.5 で Any CPU として作ったアプリは、「32ビットの優先」の機能により、Windows8.1 64-bit OS の WOW64 上で 32-bit で動いていて、ACE プロバイダも 32-bit 版なので問題なかった。

(2) .NET 4 で Any CPU として作ったアプリは、Windows8.1 64-bit OS 上で 64-bit で動いていていたが、ACE プロバイダが 32-bit 版なのでエラーとなった。

> ということは、インストールするACEプロバイダと合わせないといけないということですよね?

対象のフレームワークを .NET 4 にするのであれば、プラットフォームターゲットを x86 にして、ACE プロバイダは今使っている 32-bit 版にしておけば、OS が 32/64-bit のいずれでも動くはずです(64-bit OS の場合は WOW64 上で動く。アプリを Any CPU または x64 とし ACE を 64-bit 版にしたりすると 32-bit OS では動かなくなるので止めた方がいいと思います)。

.NET 4.5 なら今のままの設定にしておいても 32/64-bit OS 両方に対応できると思います。(個人的には Any CPU ではなく x86 にしておくべきと思いますが)

なお、ACE プロバイダは同一 PC 上で 32/64-bit 版の共存ができないそうなので注意してください(ウラワザ的手法はあるようですが)。

また、先にも書きましたが Office/Excel の 32/64-bit は関係ないです。(Office/Excel を動かすわけではないので)

回答を投稿

自分が使っているのは VS2010 なので知りませんでしたが、「32ビットの優先」というのは Visual Studio 2012 から追加された .NET 4.5 のみで使用できる新機能のようですね。(おかげさまで一つ利口になりました)

[ビルド] ページ (プロジェクト デザイナー) (C#)
https://msdn.microsoft.com/ja-jp/library/kb4wyys2.aspx

上記のページによると "チェック ボックスがオンの場合、アプリケーションは、Windows の 32 ビット バージョンおよび 64 ビット バージョンで 32 ビット アプリケーションとして実行されます" とのことで、かつ .NET 4 にはその機能はないということです。

(ちなみに、.NET 4.5 の Any CPU + 「32ビットの優先」と、.NET 4 以下の x86 は何が違うんだと思って調べてみましたが、前者は ARM の Windows 環境でも動くという点が違うという話でした)

そうすると質問者さんのケースと話の辻褄が合いますね。

(1) .NET 4.5 で Any CPU として作ったアプリは、「32ビットの優先」の機能により、Windows8.1 64-bit OS の WOW64 上で 32-bit で動いていて、ACE プロバイダも 32-bit 版なので問題なかった。

(2) .NET 4 で Any CPU として作ったアプリは、Windows8.1 64-bit OS 上で 64-bit で動いていていたが、ACE プロバイダが 32-bit 版なのでエラーとなった。

ということは、インストールするACEプロバイダと合わせないといけないということですよね?

対象のフレームワークを .NET 4 にするのであれば、プラットフォームターゲットを x86 にして、ACE プロバイダは今使っている 32-bit 版にしておけば、OS が 32/64-bit のいずれでも動くはずです(64-bit OS の場合は WOW64 上で動く)。

.NET 4.5 なら今のままの設定にしておいても 32/64-bit OS 両方に対応できると思います。(個人的には Any CPU ではなく x86 にしておくべきと思いますが)

なお、ACE プロバイダは同一 PC 上で 32/64-bit 版の共存ができないそうなので注意してください(ウラワザ的手法はあるようですが)。

また、先にも書きましたが Office/Excel の 32/64-bit は関係ないです。(Office/Excel を動かすわけではないので)

自分が使っているのは VS2010 なので知りませんでしたが、「32ビットの優先」というのは Visual Studio 2012 から追加された .NET 4.5 のみで使用できる新機能のようですね。(おかげさまで一つ利口になりました)

[ビルド] ページ (プロジェクト デザイナー) (C#)
https://msdn.microsoft.com/ja-jp/library/kb4wyys2.aspx

上記のページによると "チェック ボックスがオンの場合、アプリケーションは、Windows の 32 ビット バージョンおよび 64 ビット バージョンで 32 ビット アプリケーションとして実行されます" とのことで、かつ .NET 4 にはその機能はないということです。

(ちなみに、.NET 4.5 の Any CPU + 「32ビットの優先」と、.NET 4 以下の x86 は何が違うんだと思って調べてみましたが、前者は ARM の Windows 環境でも動くという点が違うという話でした)

そうすると質問者さんのケースと話の辻褄が合いますね。

(1) .NET 4.5 で Any CPU として作ったアプリは、「32ビットの優先」の機能により、Windows8.1 64-bit OS の WOW64 上で 32-bit で動いていて、ACE プロバイダも 32-bit 版なので問題なかった。

(2) .NET 4 で Any CPU として作ったアプリは、Windows8.1 64-bit OS 上で 64-bit で動いていていたが、ACE プロバイダが 32-bit 版なのでエラーとなった。

> ということは、インストールするACEプロバイダと合わせないといけないということですよね?

対象のフレームワークを .NET 4 にするのであれば、プラットフォームターゲットを x86 にして、ACE プロバイダは今使っている 32-bit 版にしておけば、OS が 32/64-bit のいずれでも動くはずです(64-bit OS の場合は WOW64 上で動く)。

.NET 4.5 なら今のままの設定にしておいても 32/64-bit OS 両方に対応できると思います。(個人的には Any CPU ではなく x86 にしておくべきと思いますが)

なお、ACE プロバイダは同一 PC 上で 32/64-bit 版の共存ができないそうなので注意してください(ウラワザ的手法はあるようですが)。

また、先にも書きましたが Office/Excel の 32/64-bit は関係ないです。(Office/Excel を動かすわけではないので)