2016-02-01 22 views
5

każdym razem robię build chciałbym do tego wydarzenia Pre-build wystąpić:Visual Studio pre-build zdarzenie sprawdzić, czy katalog (i plików) istnieje i usunąć go, jeśli to robi

del $(ProjectDir)\obj\Debug\Package\PackageTmp\web.config 

Działa to dobrze, jeśli katalog istnieje. Ale jeśli nie ma tam katalogu, spowoduje to awarię kompilacji. Próbowałem robić coś takiego, by sprawdzić, czy katalog tam:

if Exists('$(ProjectDir)\obj\Debug\Package\PackageTmp\') 
del $(ProjectDir)\obj\Debug\Package\PackageTmp\web.config 

Ale wierzę moje składnia jest źle, bo dostać kod zakończenia 255. Jaki byłby właściwy sposób, aby to działało?

Dzięki!

+0

Nie jest funkcją, która przyjmuje nawiasy, jej nazwa istnieje. Użyj podwójnych cudzysłowów. jeśli istnieje "ścieżka" del "ścieżka" –

+0

Czy mówisz wewnątrz samego pliku xml? Lub okno edytora na stronie Właściwości w VS? Próbowałem tego na tuzin sposobów i nie mam szczęścia, żeby to zadziałało. – ashlar64

+0

Inny sposób: zignoruj ​​kod zakończenia, np. http://stackoverflow.com/questions/7912726/how-to-modify-return-code-in-visual-studio-build-events/7913356#7913356 – stijn

Odpowiedz

4

Widocznie to działa:

if EXIST "$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config" (
del "$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config" 
) 

Powyższy fragment kodu, był jednym z pierwszych sposobów próbowałem to zrobić. Ale ciągle zawodziło. Po wielu kolejnych próbach ponownie uruchomiłem Visual Studio 2015 i ponownie wprowadziłem ten kod, a następnie zaczęło działać.

2

Chciałbym użyć celu, aby to osiągnąć. W szczególności sugerowałbym zmianę celu na BeforeBuild. Istnieje kilka różnych sposobów, aby to zrobić, ale najprostszym jest zmodyfikowanie IMHO pliku .vcxproj.

U dołu pliku projektu (możesz go edytować, klikając prawym przyciskiem myszy na swój projekt w Visual Studio -> Rozładuj projekt, a następnie kliknij prawym przyciskiem myszy i wybierz edycję tego projektu) powinieneś zobaczyć linię <Import .... Dodaj cel po tej linii, że jest coś takiego:

<Target Name="BeforeBuild" Condition="Exists('$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config')"> 
    <Delete Files="$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config" /> 
</Target> 

Zobacz How to: Extend the Visual Studio Build Process uzyskać więcej informacji na nadrzędnych Przed i po celów.