2011-11-09 16 views
10

Quindi sto modificando un modello VS multiprogetto (modello di progetto di Visual Studio) e voglio impostare un parametro personalizzato nel modello radice per essere utilizzato dai modelli secondari . Tuttavia, voglio impostarlo in base a un parametro esistente.Come creare un Parametro personalizzato valutato in un VSTemplate

Così, per esempio, questo funziona bene:

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

La variabile $ FaultProject $ è sostituito dal MyProject.FaultContracts, come dovrebbe essere.

Questo, tuttavia, non funziona:

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

mi aspetto $ safeprojectname $ per essere sostituito da valore corretto, ma non lo è. Invece, la variabile $ FaultProject $ viene sostituita da $ safeprojectname $ .FaultContracts. $ Safeprojectname $ è interpretato come letterale piuttosto che come parametro.

Questo è, nonostante il fatto che nello stesso file, questo funziona esattamente come previsto:

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

Tutte le idee sarebbe utile. Credo che potrei essere in grado di scrivere una classe IWizard che lo farebbe, ma preferirei evitarlo per una funzione così semplice, se possibile.

In alternativa, se riesco a ottenere un parametro che contiene il valore del $ safeprojectname $ del modello radice, ciò risolverà anche il mio bisogno (nei sub-template, $ safeprojectname $ è cambiato nel nome del sottoprogetto, non il valore che aveva nel modello radice).

+3

Hai mai capito come risolvere questo problema? –

+3

No, non ho mai trovato una buona risposta. Sembra che, come temevo in precedenza, dovrò scrivere un'interfaccia IWizard. Dovrò riprenderlo in un secondo momento, poiché le scadenze del progetto hanno significato che la semplice modifica manuale dei file di progetto e soluzione è più veloce della scrittura della soluzione IWizard. Voglio alla fine, come questo verrà di nuovo (l'intero punto di modelli in primo luogo). Vorrei che ci fosse una soluzione che avrebbe risolto questo problema senza richiedere al mio team di avere un pezzo aggiuntivo di codice personalizzato su tutte le loro macchine per funzionare, ma è quello che mi rimane. –

risposta

1

In un modello di più progetti è possibile avere solo i parametri di sostituzione a livello di progetto. Il modello root è a livello di soluzione e in pratica non puoi avere $ safeprojectname $ in là. Tuttavia è possibile implementare l'interfaccia IWizard e possono avere i propri parametri di sostituzione, sostituiti con i valori che si danno.

Problemi correlati