19

x64 と x86 の両方の dll を必要とするプログラムがあります (実行時にどちらが必要かを判断します) が、セットアップを作成しようとすると、次のようにエラーが表示されます。

「AMD64」をターゲットとするファイル AlphaVSS.WinXP.x64.dll' は、プロジェクトのターゲット プラットフォーム「x86」と
互換性がありません 「AMD64」をターゲットとするファイル AlphaVSS.Win2003.x64.dll' は、プロジェクトのターゲット プラットフォーム「x86」と互換性がありません
ファイル AlphaVSS .Win2008.x64.dll' ターゲット 'AMD64' は、プロジェクトのターゲット プラットフォーム 'x86' と互換性がありません

プログラムのように、セットアップを両方のプラットフォームをターゲットにするにはどうすればよいですか?

4

4 に答える 4

11

セットアップ プロジェクト (Visual Studio 内) によって作成された MSI は、一度に 1 つのプラットフォームのみを対象にすることができます。あなたのオプションは、2 つの MSI を作成し、それらをマージして、2 つから選択するカスタム セットアップ ブート ストラップを作成することです。たとえば、Advanced Installerなど、これを実行できるサードパーティ製品がいくつかあります。

于 2009-04-15T20:35:24.783 に答える
6

私もこれに遭遇し、私のソリューションについてブログ投稿を書きました:

  • deflate.exe を使用してファイルを圧縮し、別の拡張子 (.x64 など) を付けて名前を付けます。
  • コンテンツ ファイルとしてメイン プロジェクトに追加します。
  • カスタム アクション プロジェクトをソリューションに追加する
  • セットアップ プロジェクトにカスタム アクションを追加する 「インストール」カスタム アクション
  • を使用してカスタムアクションInstallメソッド内のファイルを膨張させます
  • System.IO.Compression.DeflateStream (上記のコードを参照)
  • 机の周りでちょっと踊って、廊下で、イライラしたいだけ同僚の前を通り過ぎてください :)

このファイルは、Google コードのリポジトリdeflate.exeからダウンロードできます。

于 2011-07-05T08:14:46.800 に答える
1

.Netには「任意のCPU」オプションがあります。これは、より少ないx86機能のみを使用する「一般的な」オプションであると考えたくなりますが、実際には、各マシンのJITコンパイラーがそのマシンに適切なCPUタイプを選択できるようにします。

使用すべきでないのは、いずれかのアーキテクチャに適さない依存関係または要件があることがわかっている場合のみです。たとえば、大量のRAMが必要であることがわかっている、32ビットのネイティブdllに依存している、またはアプリをプリコンパイルしたい場合です。

プラットフォーム固有のdll依存関係があるため、ここには危険があります。しかし、両方のタイプのdllがあり、実行時に適切なdllを選択する方法を知っているようです。では、「任意のCPU」オプションは機能しますか?

于 2009-04-15T19:58:02.487 に答える
-2
  1. 展開プロジェクトを開きます。
  2. ソリューション エクスプローラーで、配置プロジェクトを選択します。
  3. [プロパティ] ウィンドウで、TargetPlatform プロパティを選択します。
  4. Intel Itanium 64 ビット プラットフォームの場合は Itanium を選択し、その他の 64 ビット プラットフォーム (AMD64 や EM64T 命令セットなど) の場合は x64 を選択します。
  5. ターゲット コンピューターが指定されたプラットフォームと互換性がない場合、インストール時にエラーが発生し、インストールが停止します。
于 2011-12-21T11:10:30.187 に答える