5

Visual Studio - VB.NET のビルド イベントでコンパイラ定数を使用する方法はありますか? (特にビルド後のイベント)

シナリオ

が定義されている場合TEST_EDITION=TRUEは、ビルド後のイベント中に実行可能ファイルを実行したいので、それが定義されている場合は別のFALSEものを実行します。

これは、エディションごとに異なるインストーラーを作成するために使用できます。

PS誰かが提案する前に:いいえ、nant、msbuildなどは使いたくありません

4

3 に答える 3

11

はい、$(DefineConstants) マクロが利用可能で、ビルド イベントでテストできます。たとえば、プロジェクト + コンパイル、高度なコンパイル オプション、カスタム定数 = テストは次のようにテストできます。

if /i "$(DefineConstants)" NEQ "TEST" goto skiptest
echo Setting up for test environment
:skiptest

Test=TRUE などのより複雑なカスタム定数や複合定数は、別の方法で解析する必要があります。確かに、私は恐ろしいFOR コマンドの使い方を理解することをすぐにあきらめました。

于 2010-02-27T13:34:24.407 に答える
0

Visual Basic の構文については不明ですが、C++ では次のトリックを使用できます: ファイル global_inc.bat は次のように読み取ります。

SET PARAMETER=TRUE

これは、ビルド後のイベントで呼び出されたバッチ スクリプトによって入力される可能性があります。C++ コードでは、ファイルを次のように使用しました。

#define PARAMETER const int parameter
#define SET /**/
#include "global_inc.bat"
;
#undef PARAMETER

ビルド後のステップは次のようになります。

call global_inc.bat
if "%PARAMETER%" == "TRUE" echo True

もう 1 つの可能性は、ビルド前のステップでファイルを生成し、ビルド後のステップで使用される構成ファイルを生成することです。.vb

于 2010-02-27T13:15:25.613 に答える
0

MsBuild PostEvents を試しましたか? これは .csproj の抜粋ですが、vbproj ファイルにも同じことが当てはまります

  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
    <Copy SourceFiles="$(OutputPath)$(AssemblyName).dll" DestinationFolder="$(BinariesFolder)" ContinueOnError="true" />
  </Target>

これは、バッチ ファイルまたは実行可能ファイルを実行できるTaskExecターゲットと共に使用できます。

<Target Name="DoSomething">
    <Exec Command="D:\DoSomething.exe"/>
</Target>
于 2010-02-27T13:26:32.323 に答える