Build System for OpenPetra

From OpenPetra Wiki
Jump to navigation Jump to search

NAnt

The build system is done with NAnt. Some functions are written directly in C# in the build files, but we also have plugins in charp/ICT/PetraTools/NAntTasks.

Plugins Ict.Tools.NAntTasks.dll

  • Postgresql plugin: run sql statements against PostgreSQL
  • Mysql plugin: run sql statements against MySQL
  • DotNetExec plugin for running other Petra Tools

Configuration files

  • currently there are 3 sample OpenPetra.build.config files. The user has to pick one, copy it to OpenPetra.build.config, and modify it. *.config files are not committed to the VCS.
  • for certain setups, the user can create a OpenPetra.build.config.my, and commit it to VCS. A local OpenPetra.build.config file still has higher priority than the .my file

Generating project and solution files

  • The goal is to remove the project (csproj) and solution (sln) files from VCS, and to generate those files.
  • This way we can support several formats of project files, and we won't need nant fixProjectFiles anymore.
  • We also want to be able to generate a solution for the client and for the server, which has all project files from Ict.Common and Ict.Petra.Shared included, so that debugging is possible through all dlls.
  • We also won't need nant addProject anymore, which was using templates in csharp/ICT/PetraTools/Templates/ProjectFiles.
  • The contained cs files of a project need to be picked by convention, ie. all cs files in a directory belong to the project for that dll.
    • Question: are the paths unique and correct, so that we can calculate the project/dll name by convention?
  • The references to other dlls need to be picked up from the using clauses.
  • We will need to add some PetraTools/*.exe and Ict.Common*.dlls to the VCS, otherwise it will be difficult to generate the project files.