質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

2回答

18892閲覧

「Any CPU」ビルドで32、64ビット両環境で動作させたい

dariacynthia

総合スコア0

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2021/08/12 06:09

前提・実現したいこと

.NET 5.0 のアプリケーションを32ビット、64ビット両環境で動作させたいです。

発生している問題・エラーメッセージ

VisualStudioの対象プラットフォームを「Any CPU」にすると
64ビット環境でしか起動せず、32ビット環境では以下のエラーメッセージが表示されます。

「このファイルのバージョンは、現在の実行中の Windows のバージョンとは互換性がありません。コンピューターのシステム情報を確認して、x86 (32 ビット) または x64 (64 ビット) のどちらのバージョンのプログラムが必要であるかを確認してからソフトウェアの発行者に問い合わせてください。」

試したこと

対象プラットフォームを「x86」にすると
32ビット環境では起動しますが、64ビット環境では起動しません。
(64ビット環境には、64ビット用の .NET 5 しかインストールされていない)

補足情報(FW/ツールのバージョンなど)

【開発環境】
・Windows 10 Pro 64bit 20H2
・Microsoft Visual Studio Professional 2019
・C#

【ビルド設定】
・対象のフレームワーク:.NET 5.0
・対象プラットフォーム:Any CPU
・32ビットを選ぶ:チェックなし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/08/12 07:02 編集

> 対象プラットフォームを「x86」にすると > 32ビット環境では起動しますが、64ビット環境では起動しません。 > (64ビット環境には、64ビット用の .NET 5 しかインストールされていない) なにかの間違いでは? 少なくとも自分の Windows 10 Pro 64-bit の環境では x86 でコンパイルすれば WOW 上で 32-bit で動きますし、Any CPU にすれば 64-bit で動きますが?
退会済みユーザー

退会済みユーザー

2021/08/12 07:13

上のコメントの件、証拠がないと説得力がないかもしれませんので、回答欄に画像を貼っておきます。
退会済みユーザー

退会済みユーザー

2021/08/13 02:41

質問者さん、無言ですが、回答が出ているのでそれらに対するフィードバックを書こう。役に立った、立たなかったぐらいはすぐ返せるのでは? 役に立たなかったならどこがダメだったのかを書くとより期待する回答に近いものが出てくるかも。とにかく無言は NG です。
dariacynthia

2021/10/06 08:24

フィードバックができておらず申し訳ございません。 (しばらくログインもできない状況が続いていました…) ご回答、順に確認させていただきます。
guest

回答2

0

参照しているDLLはありますか?
あるとすればその中に64bit限定の物が混じっていたりしていませんか?

投稿2021/08/12 13:15

len_souko

総合スコア1348

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dariacynthia

2021/10/06 08:41

ご回答ありがとうございます。 参照DLLの無い状態(プロジェクト新規作成直後)から試しても、同様の結果でした。
guest

0

対象プラットフォームを「x86」にすると
32ビット環境では起動しますが、64ビット環境では起動しません。
(64ビット環境には、64ビット用の .NET 5 しかインストールされていない)

なにかの間違いでは? 少なくとも自分の Windows 10 Pro 64-bit 21H1, Visual Studio 2019 v16.11.0 の環境では x86 でコンパイルすれば WOW 上で 32-bit で動きますし、Any CPU にすれば 64-bit で動きますが?

Windows Forms アプリで対象プラットフォームを x86 に設定:

イメージ説明

ソリューションをリビルドしてから「デバッグの開始」または「デバッグなしで開始」でアプリを実行:

イメージ説明

タスクマネージャーで見ると 32-bit で動作しているのが分かります:

イメージ説明

ちなみに、対象プラットフォームを Any CPU にすれば 64-bit で動きます。

【追記】

発行するときの「プロファイル設定」で「ターゲットランタイム」が適切でないとか? 例えば、32-bit OS 用なのに win-x64 を選んだとか?

イメージ説明

投稿2021/08/12 07:12

編集2021/10/07 03:12
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dariacynthia

2021/10/06 08:50

ご回答ありがとうございます。 .NET Core 5 が32bit、64bitともにインストールされている開発環境では、回答者様と同様の動作となります。 実現したいのは「64bitOS - .NET Core 5 は64bitのみ」「32bitOS - .NET Core 5 も32bitのみ」の両環境で同一.exeを動作させたい、という内容となります。
退会済みユーザー

退会済みユーザー

2021/10/06 09:05

> .NET Core 5 が32bit、64bitともにインストールされている開発環境では、 何か大きな思い違いをしているのでは? .NET 5.0 の 32-bit 版とか 64-bit 版があるということは聞いたことがないです。 .NET 5.0 に 32/64-bit の区別はないです。それは .NET Framework 4.8 以前から同じです。 上の回答を見ればわかるはず。対象プラットフォーム x86 のアプリが 64-bit OS の PC で動いています。回答をよく見てください。 一部のライブラリやドライバなどには 32-bit 専用、64-bit 専用となっているものもありますが、そういうものを使っているとか?
退会済みユーザー

退会済みユーザー

2021/10/07 02:29 編集

以下の記事に書いてある、 PlatformTarget https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/compiler-options/output#platformtarget ".NET Core と .NET 5 以降のリリースでは、anycpu の動作にいくつかの微妙な違いがあります。 anycpu を設定したら、アプリを発行し、x86 dotnet.exe または x64 dotnet.exe で実行します。自己完結型アプリの場合、dotnet publish の手順によって、RID 構成用の実行可能ファイルがパッケージ化されます。" ・・・というところが何か関係しているのですかね?
退会済みユーザー

退会済みユーザー

2021/10/07 03:10

発行するときの「プロファイル設定」で「ターゲットランタイム」が適切でないとか? 例えば、32-bit OS 用なのに win-x64 を選んだとか?・・・回答欄に追加した画像を参照してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問