- Ho un gruppo di file personalizzati in un progetto di Visual Studio 2010.
- Ho bisogno di eseguire uno strumento su quei file personalizzati quando cambiano.
- Lo strumento genera file .h inclusi dai file .cpp esistenti.
- Desidero che lo strumento venga eseguito come parte del processo di compilazione.
- È necessario eseguire da Visual Studio, ma idealmente potrebbe anche essere eseguito come parte di un processo di msbuild.
esistenti soluzioni sub-standard
Su ciascun file, ogni volta lo aggiungo, posso andare alle impostazioni del file, impostare il tipo di elemento per costruire su misura strumento, e poi nella generazione personalizzata Dialogo degli strumenti, impostazione dei parametri della riga di comando, impostazione delle uscite (codificate) e impostazione delle dipendenze aggiuntive (codificate).
Ovviamente, questa è una soluzione scadente perché è una quantità di lavoro non banale e soggetta a errori ogni volta che si aggiunge un nuovo file del tipo personalizzato.
La soluzione desiderata
Ho messo su Visual Studio che per qualsiasi file estensione .foo, corre strumento bar.exe, quando il file .foo cambiamenti, prima che si compila il codice CPP.
Le cose che mi hanno tentato
Sulla base di questo: http://msdn.microsoft.com/en-us/library/3e889s84(v=vs.100).aspx Ho tentato di istituire un .targets e file XML. Tuttavia, non riesco a scoprire come creare un nuovo tipo di oggetto in modo tale che venga visualizzato nello studio visivo, né posso capire come applicarlo magicamente a ogni file di tipo .foo. Inoltre, non ho capito in che modo uno di questi collegamenti a qualcosa che descrive l'atto di chiamare il mio strumento bar.exe.
Ho tentato di cercare tra tutti i file xml/target di Visual Studio per tracciare i Tipi di articoli esistenti e determinare come sono tradotti in azioni di build effettive. Termina sempre al muro di ItemType, dove c'è un gruppo descritto in ProjectItemsSchema, ma non riesco a trovare dove sono implementati, o come potrei implementarli da solo.
La documentazione di MSDN è stata un fallimento completo, e penso di aver letto ogni singola pagina potenzialmente correlata dieci volte, senza successo.
In Visual Studio 2008, ho avuto questo genere di cose lavorare con un file .rules che si presentava così:
<?xml version="1.0" encoding="utf-8"?>
<VisualStudioToolFile
Name="Foo Build Rules"
Version="8.00"
>
<Rules>
<CustomBuildRule
Name="FooBuild"
DisplayName="FooGen"
CommandLine="..\..\tools\FooGen.exe [inputs]"
Outputs="$(InputName).h"
AdditionalDependencies="*.foo"
FileExtensions="*.foo"
ExecutionDescription="Generating Foos..."
>
<Properties>
</Properties>
</CustomBuildRule>
</Rules>
</VisualStudioToolFile>
Eppure Questa funzionalità è stata deprecata nel 2010, e sono stato in grado di capire come replicarlo con il nuovo sistema.
Aiuto?
Avete controllato questo? http://msdn.microsoft.com/en-us/library/xfsbz6cw(v=vs.100).aspx – hege
Questi sono quelli che stavo usando nel 2008. Non funzionano più nel 2008. –
Suppongo che tu abbia letto anche questo: http://blogs.msdn.com/b/vcblog/archive/2010/04/21/quick-help-on-vs2010-custom-build-rule.aspx. Ciò che ha attirato la mia attenzione è che, secondo questo, hai bisogno anche di un file .props, forse è quello che ti manca. Non ho provato me stesso però .... – hege