2011-11-09 8 views
10

マルチプロジェクトVSテンプレート(Visual Studioプロジェクトテンプレート)を変更していますが、サブテンプレートで使用するルートテンプレートでカスタムパラメータを設定したい。しかし、私はそれを既存のパラメータに基づいて設定したいと思います。VSTemplateで評価されたカスタムパラメータを作成する方法

だから、例えば、これは正常に動作します:それがあるべきよう

<CustomParameter Name="$FaultProject$" Value="MyProject.FaultContracts"/>

変数$ FaultProject $

は、MyProject.FaultContractsに置き換えられます。

これは、しかし、動作しません:

<CustomParameter Name="$FaultProject$" Value="$safeprojectname$.FaultContracts"/>

を私は$ safeprojectname $が正しい値に置き換えられることを期待するが、そうではありません。代わりに、変数$ FaultProject $は$ safeprojectname $ .FaultContractsに置き換えられます。 $ safeprojectname $は、パラメータではなくリテラルとして解釈されます。

<ProjectTemplateLink ProjectName="$safeprojectname$.FaultContracts">WCFFaultContract\FaultContract.vstemplate</ProjectTemplateLink>

任意のアイデアが参考になる:

これは、同じファイルで、これは期待どおりに動作するという事実にもかかわらずです。私はこれを行うIWizardクラスを書くことができるかもしれないと信じていますが、可能であれば、そのような単純な関数については避けたいと思います。

また、ルートテンプレートの$ safeprojectname $の値を含むパラメータを取得できれば、私のニーズにも対応できます(サブテンプレートでは$ safeprojectname $がサブプロジェクトの名前に変更されます)それはルートテンプレートで持っていた値ではありません)。

+3

あなたはこの問題を解決する方法を理解しましたか? –

+3

いいえ、私は良い答えを見つけたことはありませんでした。私が上記のように恐れていたように、私はIWizardインターフェイスを書く必要があります。プロジェクトの期限が過ぎると、プロジェクトとソリューションファイルを手動で編集するだけでIWizardソリューションを作成するよりも速くなるので、後でそれに戻っていく必要があります。私は最終的に、これが再び出現するようにしたい(最初の場所のテンプレートの全体点)。私は、チームが作業のためにすべてのマシンにカスタムコードを追加する必要なく、この問題に対処するソリューションがあることを願っていますが、それは私が残したものです。 –

答えて

1

複数のプロジェクトテンプレートでは、基本的にプロジェクトレベルでのみ置換パラメータを設定できます。ルートテンプレートはソリューションレベルにあり、基本的に$ safeprojectname $を持つことはできません。しかし、あなたはIWizardインターフェイスを実装することができ、あなたが与えた値で置き換えられた独自の置換パラメータを持つことができます。

関連する問題