5

たとえば、 "MyConfig"という名前の構成を持つVisual Studioプロジェクトがあり、コンパイルシンボルMY_CONFIG_SYMBOLが定義されています。VSビルドイベントで条件付きコンパイルシンボルを使用することはできますか?

MY_CONFIG_SYMBOLがプリ/ポストビルドイベントで定義されているかどうかを確認するマクロまたはコマンドはありますか? #if MY_CONFIG_SYMBOLのようなものですが、ビルドイベントのために?

+1

答えが見つかりません。 – Thracx

+0

@Thracx私はついに答えを見つけました。下記参照。 –

答えて

2

私はついに答えを見つけました。完全に、次の作品:

if "$(DefineConstants.Contains('DEBUG'))" == "True" <command> 

これは、ビルドに定義された任意の定数のために動作しますが、定数は大文字と小文字が区別されることに注意してください(「DEBUG」=「デバッグ」!)。

0

ビルドタイプ(デバッグまたはリリース)に基づいて条件付きビルドを意味する場合は「はい」を意味します。これらのスレッドをチェックアウト:

Conditional Post-build event in Visual Studio 2008

How to run Visual Studio post-build events for debug build only

+3

いいえ、私は、デバッグまたはリリースで定義された条件付きコンパイルシンボルを使用していることを意味します。デバッグ設定の場合、通常はデフォルトで定義されている条件付きコンパイルシンボルは 'DEBUG'です。これはコードで使用できますが、ビルド前またはビルド後のイベントで使用できます –

0

まあ、これは解決策ではない、単にいくつかの実験を共有することにより、状態を進めるしようとしています。 (私は、条件付きコンパイルシンボルをテストするための方法を見つけるしたことはありません。)

これを手段として、オンとオフのデバッグを切り替え統合する:debug.inclが含まれてい

<#@ include file="debug.incl" #>` 

some text1 
<# if (xdebug) { #> 
    foo = bas; 
<# } #> 
more text 

<# 
bool xdebug = true; 
#> 

最初のファイルの条件(if)はxdebugの値を見ることができるため、出力はdebug.inclのxdebugの設定に基づいて変更されます。

しかし、悲しいことに、出力ファイルは、明白なインクルードにもかかわらず、debug.inclの変更で再構築されません。また、きれいな&リビルドは世代を引き起こすようには見えないので、別のビルド構成が必要です。

(私はdebug.inclの代わりにdebug.ttを使用しないようにしてください.inclに切り替えてください。 debug.csがdebug.ttによって作成されていないようにします。)


それが条件付きコンパイルシンボルが表示されませんので、実際にテンプレートのデバッグ属性に切り替えるんが、これは、非常にうまく動作しませんでした!

<# 
#if DEBUG 
bool xdebug = true; 
#else 
bool xdebug = false; 
#endif 
#> 

some text1 
<# if (xdebug) { #> 
    foo = bas; 
<# } #> 
more text 

<#@ template debug="true" #><# template debug=false #>であなたは、それぞれ、条件付きの出力を得ますか。

関連する問題