どんな力MSBuildをコンパイルのための32ビットモードになっていますか?

StackOverflow https://stackoverflow.com/questions/1074654

質問

を使用していMSBuild( NAnt 整っ VB.NET 構成に基づいています。これらのアセンブリに依存visualながらプレーする必要がありま保証することで32ビットモードまたは64ビットOSです。を取得できます実行可能なアセンブリをコンパイル32ビットの変更によるプロジェクトVisual Studioもののようできる力のすべての実行可能ファイルを作成する32ビットモードのサーバーです。

された複数のコマンドラインパラメータMSBuildと運:

  • /p:プラットフォーム=win32
  • /p:プラットフォーム=x86
  • /p:ProcessorArchitecture=x86

なぜですか?あの物件MSBuild使用時の作成のVBプです

役に立ちましたか?

解決

アセンブリ自体は常に理由の.vbprojファイルに設定を追加しないで、32ビットであることを行っている場合は?これは、方程式のうち、MSBuildのがかかります。

だけの.vbprojファイル内の最初のPropertyGroupに次の行を追加します。

<PlatformTarget>x86</PlatformTarget>

他のヒント

MSDN のによると、あなたは正しいことをやっています。 /p:Platform=x86のように見えますが、実際には、多分それは/p:PlatformTarget=x86です。

(それはあなたのNAntファイルの問題ではありませんことを確認してください。右のビルド構成のビルド出力を見てください(のデバッグの/ のリリース)。

念のために、これは私が私のx86プラットフォームターゲットを構築するために、このコマンドラインを使用し、助け

C:\Windows\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe my.sln /t:build /p:Configuration=Release;Platform=x86

ソリューションエクスプローラで、右のルートノードをクリックします - > の構成マネージャの。あなたは32ビットとして構築するために内の各プロジェクトに指示するソリューション全体の設定を定義する必要があります。 (注意:あなたはおそらく既に1を持っているあなたは、32ビットとして構築するために少なくとも一つのプロジェクトを設定している場合)、ステップバイステップのチュートリアルで、MSDNのブログ投稿を参照してください。の<のhref = "のhttp: //blogs.msdn.com/aaronhallberg/archive/2007/06/25/solution-configurations.aspx」のrel = "nofollowをnoreferrer">ソリューション構成する

次に、あなたはあなたのチームビルドに必要な「プラットフォーム」と「味」 .proj / .targetsファイル。たとえばます:

<ConfigurationToBuild Include="Release|x86">
    <FlavorToBuild>Release</FlavorToBuild>
    <PlatformToBuild>x86</PlatformToBuild>
</ConfigurationToBuild>

あなたは構築されたいくつかの組み合わせを持っているこれらのプロパティの2以上の区分を指定することができます。私は、「リリース| x86の」コピー/ペーストします。(または、それがどのように見えるものは何でも)、直接それを確実にするために、あなたの.slnファイルから正確に一致する文字列を - あなたは、ソリューションエクスプローラから直接取得することはできません。

あなたのコメントに関してます:

MSBuildの特性評価は、それが宣言型と命令的なスタイルをミックスするので、かなり複雑です。ブログの記事 MSBuildの特性評価を参照してください。 の詳細については。私は、その繊細さに依存しないことを好みます。

これは、コマンドラインで指定されたプロパティは、他のすべてをオーバーライドする必要があることは事実だが、チームビルドは、複雑さの別の層を有しています。 再帰のMSBuild invokation経由ではなく、通常のタスクのよう。それは、これをオフに引っ張る方法はPlatformToBuildのような通常のプロパティを取り、一回ごとの設定のために、オンザフライで生成されConfigurationToBuild.PlatformToBuild(など)と呼ばれるグローバルプロパティのセットでそれらをラップすることです。これは、はるかに柔軟な内部チームビルドエンジンになりますが、それはまた、あなたが困難たいコマンドラインの動作をハッキングになります。

あなたは直接コマンドライン上ConfigurationToBuild.PlatformToBuildを設定してみてください可能性 - それがうまくいくかもしれない、私はよく分かりません。しかし、それは間違いなく、これまで、単一のビルド定義に複数の構成を構築することができなくなるでしょう。このような理由から、私は上記の私のアドバイスにこだわっています。

は正確に同じ問題を経験した後、私はC:\WINDOWS\Microsoft.NET\Framework64(なしC:\WINDOWS\Microsoft.NET\Framework)でのバージョンに... 64でのMSBuildのバージョンを使用してから切り替えて、物事がうまくコンパイルされます。

MSBuildのバージョン15の場合はそれがあります / P:PlatformTarget = x86の

この質問へのナントのMSBuildタスク・答えます:

<msbuild project="your.sln">
    <property name="PlatformTarget" value="x86" />
</msbuild>

私は右のプロパティを見つけるために使用するより実用的な方法は、.csprojプロジェクトの1を開くことです  (C#の場合の)ファイルとは、Visual stdioのから「x64の」/「AnyCPU」/「のx86」を選択したときに影響を受けているプロパティを参照してください。変更されたどのようなプロパティは、コマンドラインからそれを設定する必要があります。 Visual Studioの2015年で、<プラットフォーム>のようです。だから、引数の/ PとのMSBuildを呼び出すことができます。プラットフォーム= x64のの、それが動作するはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top