- Mam kilka plików niestandardowych w Visual Studio 2010 projektu.
- Muszę uruchomić narzędzie w przypadku tych niestandardowych plików, gdy ulegną one zmianie.
- Narzędzie generuje pliki .h zawarte w istniejących plikach .cpp.
- Chciałbym, aby narzędzie działało jako część procesu kompilacji.
- Musi działać z poziomu wizualnego studia, ale najlepiej może również działać jako część procesu msbuild.
Istniejące sub-standardowych rozwiązań
Na każdego pliku, za każdym razem kiedy go dodać, mogę przejść do ustawień plików należy ustawić typ elementu zwyczaj budowania Tool, a następnie w zwyczaj budowania Dialog narzędzi, ustaw parametry wiersza poleceń, ustaw (wydrukowane na stałe) wyjścia i ustaw dodatkowe zależności (na sztywno).
Oczywiście, jest to kiepskie rozwiązanie, ponieważ jest to nietrywialna i podatna na błędy praca za każdym razem, gdy dodajesz nowy plik typu niestandardowego.
Pożądana rozwiązanie
skonfigurować visual studio, które z jakiegoś pliku przedłużki .foo, uruchamia narzędzie bar.exe, gdy zmienia plików .foo, zanim kompiluje kod CPP.
Czego próbowano
Na tej podstawie: http://msdn.microsoft.com/en-us/library/3e889s84(v=vs.100).aspx próbowałem założyć .targets i .xml plik. Nie mogę jednak dowiedzieć się, jak utworzyć nowy typ przedmiotu, który pojawi się w studiu graficznym, ani też nie wymyślę, jak sprawić, by był on magicznie stosowany do każdego pliku typu .foo. Ponadto, nie zorientowałem się, w którym miejscu tego linku do wszystkiego, co opisuje akt wywoływania mojego narzędzia bar.exe.
Podjęto próbę przeszukiwania wszystkich plików xml/celów visual studio w celu śledzenia istniejących typów elementów i określenia, w jaki sposób są one tłumaczone na rzeczywiste działania kompilacji. Zawsze kończy się na ścianie ItemType, gdzie jest paczka opisana w ProjectItemsSchema, ale nie mogę znaleźć, gdzie są one zaimplementowane, ani jak mogę je zaimplementować samodzielnie.
Dokumentacja MSDN była kompletną porażką i myślę, że przeczytałem każdą potencjalnie powiązaną stronę dziesięć razy, bezskutecznie.
w visual studio 2008, miałem tego rodzaju rzeczy pracy z .rules pliku, który wyglądał tak:
<?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>
Jednak funkcja ta została zaniechana w 2010 roku, i byłem w stanie zorientować się, jak powielić to z nowym systemem.
Pomoc?
Sprawdziłeś to? http://msdn.microsoft.com/en-us/library/xfsbz6cw(v=vs.100).aspx – hege
Oto, czego używałem w 2008 roku. Nie działają już w 2008 roku. –
Przypuszczam, że musiałeś przeczytać ten też: http://blogs.msdn.com/b/vcblog/archive/2010/04/21/quick-help-on-vs2010-custom-build-rule.aspx. To, co wpadło mi w oczy, to, że zgodnie z tym, potrzebujesz również pliku .props, może tego właśnie brakuje. Nie próbowałem tego jednak ... – hege