W moim projekcie używam zewnętrznego narzędzia do aktualizacji niektórych plików binarnych. Pliki te są zawarte w projekcie jako "treść".Visual Studio dodaje zdarzenie pre-build, które zawsze działa (projekt C#)
W tej chwili narzędzie jest uruchamiane podczas "zdarzenia poprzedzającego kompilację" we właściwościach projektu C#. Niestety to zdarzenie jest wykonywane tylko wtedy, gdy projekt jest nieaktualny, co nie jest tym, czego potrzebuję.
Pracuję nad tym, zawsze używając "przebuduj" zamiast "kompilacji" w moim projekcie, ale jest to nużące i powolne.
Muszę wykonać to narzędzie zawsze, niezależnie od tego, czy projekt jest, czy nie jest aktualny. W rzeczywistości nawet zanim MSBuild zdecyduje, czy projekt jest aktualny, narzędzie modyfikuje niektóre pliki zawarte w projekcie, wpływając tym samym na aktualny wynik kontroli.
Czy jest to właściwy sposób?
Nie, modyfikowanie projektów podczas ich ładowania do IDE nie zakończy się pomyślnie. Na pewno jest lepszy sposób, twoje pytanie nie pomoże nam pomóc. –
@HansPassant Może przesadziłem z tym pytaniem. Sprowadza się to do tego: czy istnieje sposób na wykonanie polecenia przed kompilacją? – kaalus
Dla projektów C++ możesz to zrobić używając Celu z atrybutem 'BeforeTargets =" BuildGenerateSources "', dla C# możesz zrobić coś podobnego i po prostu wymyślić, który z wielu celów zostanie wywołany w kompilacji, której będziesz używał dla tego atrybutu BeforeTargets. Uruchom pełną kompilację i sprawdź wyjście lub zacznij szukać w Microsoft.CSharp.targets lub tak samo. Jednak, jak mówi Hans: wyniki mogą nie być zgodne z oczekiwaniami – stijn