Using on Microsoft Windows
The major issue that makes Windows built very difficult is that you need to rebuilt Subversion itself because the binaries of Subversion under Windows are statically linked. Moreover, as far as we know, the current project file of Subversion for Windows does not have a built-in option to make a client DLL. There are also some other issue that currently require a separte built of SubversionSharp itself.
- First of all, release 1.0.x of Subversion links to APR statically under Windows and dynamically under Linux (This has changed with release 1.1.x)
2. The Windows version of Subversion is built entirely statically which prevent accessing the Subversion C API.
3. Under Windows, delegates default to StdCall which is not what is expected for interfacing Subversion. We need to hack the generated IL code to force Cdecl delegate because C# does not provide any syntax to specify delegate calling conventions, see CallConvHack.1
4. Under Windows, unmanaged structure packing differ from the Unix structure packing. This should be related to the way the Subversion client itself is compiled, but until now we have been unable to overcome the problem during the compilation of Subversion.
We expect to overcome the last two points and the first one should be resolve by the new 1.1.x branch of SVN. Until the Subversion team does not make required changes to provide a DLL for their client API under Windows, we are stuck (as other projects like TortoiseSVN or AnkSVN) to provide a special built of the client library with our project. Under Linux, there is no such difficulties, just building our DLLs and it works on the standard installation of Subversion.
- ^ In .NET 2.0 framework, a similar attribute to the one used by CallConvHack (UnmanagedFunctionPointerAttribute) is available and there will be no need for this hack anymore. Toby Johnson has branched our sources that way to better support .NET 2.0, you may be interested to visit its SVN.NET site