WPFとSilverlightの両方で使用されるコードを書いています。C#では"#if SILVERLIGHT"
、条件付きコンパイルに使用でき、機能します。
ただし、XAMLでは、一部の属性に互換性がないため、まったく異なるXAMLファイルを使用する必要があります。XAMLファイルは99%似ており、同期を維持するのは面倒です。
それらをT4テンプレートに変換したいので、次のようなことができます。
<SomeControl <#=ClipsToBounds()#> />
WhereClipsToBounds()
は、WPFとSilverlightで異なるテキストを生成します。要件は次のとおりです。
- XAMLでの作業中のIntellisense
- ビルド時に生成されたテンプレート
- プロジェクトは自己完結型であり、VisualStudioのストックバージョンで動作する必要があります。さまざまなSDKやサードパーティのエディターのインストールは許可されていません。
- テンプレート実行の結果は、ソース管理に含まれるべきではありません。-
custom tool
からXAMLファイルを変更できMSBuild:Compile to TextTemplatingFileGenerator
、Intellisenseを失うことはありません。ただし、結果のテンプレートは設計時に生成されます。その後、ビルド時に生成することは大きな苦痛のように思えます。
誰かがこの種のセットアップで成功した経験をしましたか?