Makra postbuild i prebuild potrafią bardzo ułatwić życie przy często wykonywanych czynnościach przed i po kompilacji.
Przykładowe zastosowanie z mojego projektu w MVC4, gdzie każdy moduł aplikacji jest w oddzielnym projekcie. Dodając referencje w głównym projekcie kopiują się tylko binarki bez widoków, cssów i jsów. Widoki można również by było skompilować ale dalej zostaną CSS i JS które trzeba przekopiować ręcznie po każdej kompilacji.
Rozwiązanie
PostBuildEvent modułów dodałem
1 2 3 | xcopy "S:\WEB\Strony\PolaMVC\PolaMVC.Modules\PolaMVC.Modules.SelfInvoicing\Views" "S:\WEB\Strony\PolaMVC\PolaMVC\Areas\SelfInvoicing\Views" /s /i /y /EXCLUDE:S:\WEB\Strony\PolaMVC\excludefiles.txt xcopy "S:\WEB\Strony\PolaMVC\PolaMVC.Modules\PolaMVC.Modules.SelfInvoicing\Content\Css\*.css" "S:\WEB\Strony\PolaMVC\PolaMVC\Content\Css" /s /i /y xcopy "S:\WEB\Strony\PolaMVC\PolaMVC.Modules\PolaMVC.Modules.SelfInvoicing\Scripts\*.js" "S:\WEB\Strony\PolaMVC\PolaMVC\Scripts" /s /i /y |
excludefiles.txt zawiera listę plików/katalogów do pominięcia:
1 | katalogi i pliki do pominiecia |
Dodatkowo w PreBuildEvent kasuje katalogi obj i bin:
1 2 | DEL /S /Q "S:\WEB\Strony\PolaMVC\PolaMVC.Modules\PolaMVC.Modules.ProviderFiles\bin" DEL /S /Q "S:\WEB\Strony\PolaMVC\PolaMVC.Modules\PolaMVC.Modules.ProviderFiles\obj" |
Zmienne
W kodzie makra mamy dostępnych kilka zmiennych z których możemy skorzystać np do kopiowanie skompilowanej dllki do określonego katalogu na dysku:
PostBuildEvent z użyciem zmiennej TargetDir:
1 | xcopy "$(TargetDir)MA.ePolaNET.Common*" "S:\BIN" /s /i /y |
Inne dostępne zmienne:
Macro | Description |
---|---|
$(ConfigurationName) | The name of the current project configuration, for example, „Debug”. |
$(OutDir) | Path to the output file directory, relative to the project directory. This resolves to the value for the Output Directory property. It includes the trailing backslash '\’. |
$(DevEnvDir) | The installation directory of Visual Studio (defined with drive and path); includes the trailing backslash '\’. |
$(PlatformName) | The name of the currently targeted platform. For example, „AnyCPU”. |
$(ProjectDir) | The directory of the project (defined with drive and path); includes the trailing backslash '\’. |
$(ProjectPath) | The absolute path name of the project (defined with drive, path, base name, and file extension). |
$(ProjectName) | The base name of the project. |
$(ProjectFileName) | The file name of the project (defined with base name and file extension). |
$(ProjectExt) | The file extension of the project. It includes the ’.’ before the file extension. |
$(SolutionDir) | The directory of the solution (defined with drive and path); includes the trailing backslash '\’. |
$(SolutionPath) | The absolute path name of the solution (defined with drive, path, base name, and file extension). |
$(SolutionName) | The base name of the solution. |
$(SolutionFileName) | The file name of the solution (defined with base name and file extension). |
$(SolutionExt) | The file extension of the solution. It includes the ’.’ before the file extension. |
$(TargetDir) | The directory of the primary output file for the build (defined with drive and path). It includes the trailing backslash '\’. |
$(TargetPath) | The absolute path name of the primary output file for the build (defined with drive, path, base name, and file extension). |
$(TargetName) | The base name of the primary output file for the build. |
$(TargetFileName) | The file name of the primary output file for the build (defined as base name and file extension). |
$(TargetExt) | The file extension of the primary output file for the build. It includes the ’.’ before the file extension. |
Wyświetleń: 21 303
Comments