While there has been considerable interest in a .Net port of LiquiBase, there is not yet anything functional. The goal of this page is to provide a general overview of the current state and roadmap for the port. For more information, or to offer help, visit the LiquiBase .Net Port forum.
Our initial (and possibly long-term) goal, is to share as much code as possible between the .Net and the Java versions of LiquiBase. There is a large amount of logic in LiquiBase that consists of “if creating a table of database type X, use this SQL” which is the same no matter what platform you are on. In order to keep that logic as correct and complete as possible, we are writing as much of liquibase as possible in a cross-platform language. After evaluating available options, we decided on using IKVM.NET to compile Java bytecode to .Net.
There is enough work planned on the Java side of LiquiBase that the primary Java LiquiBase developers will not be able to dedicate much time beyond answering questions and general architecture and direction until the second half of 2010.
Note: Please improve this documentation as you can
Source for LiquiBase can be checked out from https://github.com/liquibase/liquibase
Since IKVM compiles java bytecode (not source files) to .Net IL, you need to have enough of a java dev environment to make changes as necessary and recompile the core library.
You'll need to download and install :
Just unzip the file to where you want it installed
As the .Net port matures, we will publish a pre-compiled, pre-IKVM-ed build which will remove the need for any Java environments for development.
In the LiquiBase repository, there is a core-clr folder with the .net implementation code, including a is a visual studio solution file
You will notice that all the core liqubase package and method names follow the java conventions of lower case first letters. Eventually we will want to have a .net facade to the library that will completely hide the fact the underlying library for most uses. I'm not sure how easy that will be to do, but it is something to keep in mind as you are looking at return types and parameters etc. We may want to eventually make a LiquiBase.LiquiBase C# class that works similar to the liquibase.LiquiBase Java class as the main entry point for integrating with LiquiBase