SummaryWhat do you get when you combine Microsoft's Volta and Mozilla's XUL technologies? .NET XUL Applications!
Microsoft VoltaThe Volta technology preview is a developer toolset that enables you to build multi-tier web applications by applying familiar techniques and patterns. One of the component of Volta is a MSIL compiler that converts .NET code in javascript.
http://labs.live.com/volta/ Mozilla XULXUL (pronounced "zool") is Mozilla's XML-based user interface language that lets you build feature rich cross-platform applications that can run connected to or disconnected from the Internet. Javascript is used as the main application language.
http://developer.mozilla.org/en/docs/The_Joy_of_XUL Volta XULOver the last few weeks I have been trying to make both technologies interoperate. It was quite a challenge but I was successful. More details on how this integration works is on this forum thread:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2585164&SiteID=1.
Gains of building XUL applications with Volta:
* Cross-platform applications
* VS IDE features can be leveraged (code intellisence and xul intellisence)
* Integrated debugging
Current limitations of Volta:
* SLOW!
* Limited VB support
* Limited subset of .NET framework can be used
Try a sample application online (firefox required):
* Calc-like calculator:
http://ffdataanalytics.sourceforge.net/voltaXULhello/Calculator.xul ReleaseFor anyone who wants to try this, I made a small application available here that configures your system, generates VS projects according to different templates (empty, blank form, hello world) and publishes a xulrunner compatible application once you are complete. (VS 2008 standard and above required for volta).
The code of the sample calculator is available for Win Forms and for XUL and there's also a unit test project. I also included the code of the volta xul library. Right now it's pretty bare bone and only includes the classes / methods needed for the sample.
.NET Firefox extensionsI have not tried this yet but it should be definitely possible. There is no known limitation that I am aware of that would prevent this from working.