2013-05-20 15 views
5

ho sviluppato su misura compito MSBuild chiamato ExportSolution e ho bisogno di passare personalizzati enumPackageType valore ad essa.Passo variabile di tipo personalizzato per personalizzato MSBuild compito

Il PackageType è semplice:

public enum PackageType 
{ 
    Managed, 
    Unmanaged, 
    Both 
} 

Lo script MSBuild è troppo semplice:

<Target Name="ExportSolution" DependsOnTargets="BuildTasksDll"> 
    <Message Text="Exporting solution '$(SolutionName)' to '$(SolutionPath)'" /> 
    <ExportSolution SolutionName="$(SolutionName)" PackageType="Both"></ExportSolution> 
</Target> 

sceneggiatura Tuttavia corsa per quel bersaglio sto ricevendo seguente messaggio di errore:

errore MSB4030: "Both" è un valore non valido per il parametro "PackageType" ter del task "ExportSolution". Il parametro "PackageType" è di tipo "Tasks.Common.PackageType".

In quale formato dovrei passare il valore alla variabile di PackageType per far funzionare questo codice?

+0

Hai provato a passarlo come nome di tipo completo, ad esempio "Tasks.Common.PackateType.Both'? Un'altra soluzione potrebbe essere passarla come stringa e quindi analizzarla all'interno dell'attività – Pako

+0

@Pako Ho provato un simile approccio, non c'è differenza, purtroppo ... – shytikov

+0

'Both' ha un valore di 2, quindi passa '2' nel la proprietà potrebbe funzionare. Questo non sarà molto leggibile, quindi, penso che il suggerimento di Pako di rendere la proprietà una stringa e analizzarla all'interno dell'attività potrebbe essere migliore . –

risposta

0

Rifarei l'Enum in questo modo.

public enum PackageType 
{ 
    Managed = 0, 
    Unmanaged = 1, 
    Both = 2 
} 

Quindi vorrei modificare il mio script di build per utilizzare gli interi come metodo di selezione.

<ExportSolution SolutionName="$(SolutionName)" PackageType=2></ExportSolution> 

Questo non può essere la soluzione che state cercando, ma può funzionare per quello che ti serve.

+0

Questo potrebbe funzionare, sicuramente, ma questo significa anche che ho bisogno di cambiare l'interfaccia della classe chiamata per usare interi nudi invece di enumerazioni ... Potrei facilmente cancellare quell'enum allora ... E non ci sarà chiarezza e leggibilità in codice più .... – shytikov

Problemi correlati