問題タブ [anycpu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
319 参照

c# - /platform:x64 を使用して C# コードをコンパイルする必要がある場合

/platform の別のオプションに関する Microsoft の説明を読むと、/platform:anycpu を使用すると、32 ビット システムでは 32 ビット アプリケーションとして、64 ビット システムでは 64 ビット アプリケーションとして実行されることがわかりました。

では、たとえば x64 を強制的に使用する必要があるのはなぜですか?

人々が他のオプションを使用する理由はありますか?

0 投票する
0 に答える
134 参照

c# - ComputeKeys の AccessViolationException

まず、これが明らかにハードウェアの問題であり、プログラミングの問題ではない場合はお詫び申し上げます。そうである場合は、適切な場所に移行できることを願っています。

私は長時間実行されている Web サービス プログラム (任意の CPU) を持っています。これには、メモリ内に保持されている多数のデータ リポジトリがあります。1 時間ごとに更新されるものもあれば、それほど頻繁に更新されないものもあります。これらのリポジトリの一部は、サード パーティのソースからデータを取得した後、データを並べ替えます (単純な POCO)。

ブルー ムーンになるとAccessViolationException、メソッド内ComputeKeysSort. これらのリポジトリの一部はList<T>.Sort、サード パーティのソースからデータを取得した後に使用します。

これらの並べ替えを実行するコードは簡単で、リポジトリに依存しますが、ここに 2 つの例を示します。

また:

これらのデータセットは (比較的) 非常に大きいことに注意してください。1 つには 140,000 を超える要素があります。私はデータベースに例外を記録します。これは私が持っているログです (時間は、リポジトリがその時点でデータのフェッチを終了していたことを示す別のログと相関しています):

ご覧のとおり、両方のホストでほぼ同時に発生しました。したがって、これは .NET/プログラミングの問題ではなく、ハードウェアの問題ではないかと思います。これらは両方とも VM であり、明らかに同じ方法で構築されていることに注意してください。別々のホスト上の両方のプロセスが停止しました (ホスト間で負荷分散を行います)。

リポジトリの更新は、System.Threading.Timer. ただし、私のリポジトリ ログを見ると、1 時間未満で更新されるリポジトリはなく、更新するのに最も長いリポジトリは 11 分であるため、重複はありません。

ReadWriterLockSlimデータへのアクセスは、クラスを使用して保護されています。私はこれが少しあいまいであることを知っています.誰かが追加情報を必要とする場合は、私ができることを喜んで提供します.

0 投票する
1 に答える
391 参照

windows - プログラムが AnyCPU でビルドされたかどうかを判断する

このコメントを読んで から

「任意の cpu」に組み込まれている場合は、dumpbin ヘッダーに 32 ビットとして表示されます。

通常の 32 ビット プログラムとAnyCPUプログラムを区別する方法を知りたい です。可能であれば、コマンドラインからこれを行うことをお勧めします。私は試した

各タイプのプログラムで、この方法ではそれらを区別できませんでした。

0 投票する
2 に答える
1289 参照

c# - ビルド プラットフォーム ターゲットの AnyCPU EXE が 64 ビット マシンで 32 ビット ヘッダーを表示する

これが以前に尋ねられたかどうかはわかりません(何も見つかりませんでした)。シンプルなコンソール アプリ/ESE があり、以下の設定があります。

ここに画像の説明を入力

Windows 8、63ビットOSを実行しています。EXE ターゲット フレームワーク .NET 4.5 ただし、この EXE をコンパイルすると、まだ 32 ビット EXE として表示されます。

ここに画像の説明を入力

これは「任意の CPU」であるため、EXE は 64 ビット / PE32+ としてコンパイルされると予想されます。

これがまだ32ビットである理由を教えてください。

0 投票する
0 に答える
458 参照

c++ - Visual Studio 2013 を使用して混合 (ネイティブおよびマネージド) アセンブリを作成する最も簡単な方法は何ですか?

x64 でビルドされていると思われるアセンブリがあり、Any CPU構成のプロジェクトでそれを参照したいと考えています。しかし、その.netアセンブリを任意のCPUプラットフォームでプロジェクトに参照すると、次の警告が表示されます

したがって、ここで説明されているように、C++ 混合モード アセンブリを使用しようとしています。CLR コンソール アプリ (C++) を作成しました。

ここに画像の説明を入力

しかし、長い間戦ってきたのと同じ例外が再び発生します。示されているソリューションでは、CSharpT1 は、CLR Cpp コンソール アプリ プロジェクトである CppT1 を参照するスタートアップ プロジェクトです。これを読んだ後に私が期待したのは、Cpp プロジェクトであり、構成が x64 に設定されているため、問題なく CppT1 を参照できることです。しかし、問題は残りました。私の考えは、x64アセンブリをロードできるCppプロジェクトをスローすることです。これはもう1つの参照です。

0 投票する
1 に答える
2035 参照

c# - アプリケーションは Visual Studio の単体テストでは x86 として実行されますが、スタンドアロンの場合は x64 として実行されます

このコード行

アプリが単独で実行されている場合、true と評価されます。

しかし、Visual Studio の単体テストで同じ式を実行すると、false と評価されます。

ソリューション プラットフォームとして「任意の CPU」を選択しました。マシンは 64 ビットです。

どうしてこれなの?

ここに画像の説明を入力

上の画像のように設定しても、Resharper は x86 として実行します