C# IDE Mobile, as its name implies, is a C# Integrated Development Environment which executes on Windows Mobile 5 or 6 with .NET Compact Framework 2. It allows you to write programs using the C# language and the .NET 2.0 Compact Framework (.NET2CF). The program is parsed and executed at runtime (there is no compilation or link required).
Important note: No .NET SDK IS REQUIRED: At the difference of other tools which do "C# Scripting" by wrapping CSC.EXE, C# IDE Mobile doesn't require you to have the .NET SDK (which includes the compilers). It only requires having the .NET 2.0 (Compact or not) Framework Redistributable (i.e. the runtime .NET). It isn't a wrapper around the Microsoft CSC.EXE compiler.
The goal is mainly to develop code while away from your desktop and be able to test it. Then if you want you can compile it on your desktop to obtain a native WM/PPC executable (mainly this allows faster execution).
Here are just some examples of what is possible on your Pocket PC thanks to this:
Creating
applications with graphical user interfaces
Creating
classes and methods (to better organise your program into components)
Using all
of the.NET Compact Framework classes
Doing file
manipulation (.NET as many nice static functions for this)
Running
processes
Using
.NET2 generics (to create lists, tables, arrays,
)
Using C#
control structures (loops, conditional,
)
See the known limitations below in order to see what is known not to be possible.
Just to illustrate (more advanced examples are provided in the download section), here is a very simple example of code you can write:
namespace TestNS
{
class Test
{
static void
{
System.Windows.Forms.Form f=new System.Windows.Forms.Form();
f.ShowDialog();
}
}
}
First install C# IDE Mobile as explained in the "installation" section.
Execute
a2i2m.exe and C# IDE Mobile's main window shows up. This window contains a text
editor which is where you are supposed to type your C# code.
Copy/Paste
the little sample above into this window.
Go into
"Menu/Debug/Run". The application will run and the Form you created
will appear. If you know C# you can try adding controls, event handlers, loops,
You can
save and load your work with the "Menu/File/Save" and
"Menu/File/Load" functions.
"Menu/View/"
has an entry "Source code" to view your code (this is the standard
display), an entry "Tokens" to view the result of the tokenisation
(this isn't really useful), an entry to view the "Output" (this isn't
really useful) and an entry "Toolbar" to hide/show the toolbar
"Menu/Help/MS.NET2CF
Index" is detailed below.
"Menu/Help/About"
displays an about box with the version number.
"Menu/Help/C#
IDE Mobile Manual" displays this manual in internet explorer (iexplore.exe
must be in the path for this to work).
By clicking on "Menu/Help/MS.NET2CF Index" a new window appears. This is the MS.NET2CF Index and allows viewing the .NET assemblies and the types they contain, with their methods, constructors and properties.
This is useful when developing without any documentation as it is in fact a lightweight documentation of the .NET2CF. You can see all the available classes, with their methods and parameters, ... As the naming is quite explicit you can often go quite a long way with this (if you know the platform a little).
The type filter field allows you to filter the types found in an assembly (because other wise it is often difficult to find the class you're looking for because there are so many).
For example, if in the type filter you enter "Forms.Form" and then you select the "System.Windows.Forms" assembly, you can easily find "System.Windows.Forms.Form" to look at all the methods and properties and use them.
Despite the shortcomings exposed in the "known limitations" sections, the idea is to use C# IDE Mobile like any other C# compiler in the .NET2CF, so you can refer to these documentations for other details. I don't plan to integrate a C# or .NET tutorial here. You can look at the example code and extend on it with your own C#/.NET2CF experience.
I'm still improving C# IDE Mobile and I hope to finish with something as close as possible to standard C#/.NET2CF.
In the installation directory is a folder named "UserPlugins". Any C# IDE Mobile program put into that folder will appear in the "Menu/Tools/User plugins" menu and will be launched when the corresponding menu item is clicked.
Copy/Paste can be used to copy results from the plugin into the C# IDE Mobile source editor.
Currently, the main limitations are (there are maybe other elements I haven't thought of in this list):
There are
some limitations on inheritance (this is been worked on)
Operators
priorities aren't supported (you must use parenthesis for this, which isn't
that bad in fact)
All
methods and fields are "public" (the "private" and
"protected" keywords are ignored)
Execution
can sometimes be slower than expected, this is due to the
"interpreter" nature of C# IDE Mobile. Also, for the same reasons,
errors (even syntax errors) are only spotted when the execution reaches them
Click the following links to download the C# scripter and some script examples which you can test and use to start your own.
Click here to go
the download page for C# IDE Mobile
Click here to go to Harvey ROWSON's main page
The installation procedure only requires copying the files to your Pocket PC.
To install, do as follows:
Download
the zip
Copy it to
your PPC (Pocket PC) to wherever you want to install it
Unzip the
zip (you could also have unzipped on the PC and copied the unzipped folder, it
would work as well)
Go down
the folder(s) and click on a2i2m.exe to execute C# IDE Mobile
To uninstall:
C# IDE
For information, and thanks to Microsoft's .NET device independent strategy, the software also runs on a desktop PC and in fact probably on anything which has a .NET 2.0 Compact Framework compatible environment installed.
First, in order to use this software you must ensure that your Windows Mobile 5 or 6 has the Microsoft .NET Compact Framework 2.0 Redistributable installed.
You can get this from Microsoft's web page:
Or you can do a search with your favourite search engine with "download .net 2.0 compact framework".
Important note: You do not need the .NET SDK, the runtime (redistributable) is all you need.
Initial
version of the application
Multiple
functions allowed ("
Loops
"while" are supported
Control
structures "if" are supported (but not else)
Types
"int", "float" and
"string" are handled by the operators (Arithmetic, Relational and
Logical)
Operators
"+" and "<" and "new" are supported
Index
"[]" operator supported for generics
Calls to
the .NET2CF are supported (methods, properties, object instantiation, static,
)
C#
Inspector module: Online .NET2CF help on types (via reflection)
Can't
create new types (classes in particular)
others
Dynamic
and static support for variable screen sizes
Comments
are now supported (both "//" and "/* */" style)
Improved
support of operators (Arithmetic, Relational and Logical all supported)
others
Support of
"for" loops (example: "for(int i=0;i<10;i=i+1){}")
Corrected
bug with "==" operator
Improved
error reporting (location and suppressed recursive messages)
Handling
of Decrement ("") and Increment ("++") operators (both
post and pre, ie "i++"
and "++i")
Added
support for new assignment operators ("+=", "-=",
"*=", "/=", "&=", "|=",
"^=")
"else"
is now possible
"if",
"else", "for" and "while" now admit either a
block ("{
}") either an expression ("
;")
Added
support for "null" in Relational operators and Assignement
Improved
C# Inspector to list more details
Added
highlight of error location in editor
Handling
of array types (like "int[] tab=new int[10]") and associated indexers
Outer
namespace and class are now named (instead of the unnamed and unseen previous
versions)
others
Renamed
the software from "C# Scripter" to "C# IDE Mobile" to
better reflect its nature
Handling
of "try/catch" error control with "throw" exception rising
Added
management of "using" directive
Function
exit with "return" is now possible
Implementation
of loop control flow keywords "break" and "continue"
Reorganised
the menus to be closer to developers' habits
Miscellaneous
minor bug fixes and performance improvements
Added
support for undo/cut/copy/paste in the editor windows
Types and
functions can now be copied from the "MS.NET2CF Index" window to the
editor
The
"MS.NET2CF Index" window is now persistent between calls (avoids
reselecting the Type each time)
On errors
it is now possible to choose to select the error or not (leave the cursor where
it was, avoids getting lost)
Added
"light" support for user plugins (allowing
users to create plugins to facilitate/automate
development in conjunction of copy/paste)
Resolved
major (but rare) issue with scope management
Floats are
now parsed culture independent
Reworked
undo/cut/copy/paste to use WM clipboard (Paste no longer moves the scroll/caret
and copy/paste works with other apps)
Fixed
negative number declarations (like "int i=-1;", "if(i<-5)",
)
Fixed
support for escape characters ('\n', '\r', '\r\r', '\t')
Fixed
support for char types and array initialisation
The main
limitation of previous versions is now history: It is now possible to create
new classes and instantiate them (these can inherit from .NET types, for
example Forms created from VS designer now execute with no changes)
Added
"Insert code" menu to easily insert recurring blocks of code
(functions, classes, loops,
)
Small bug
fix on escape character support
Improved
expression end detection (this caused some problems in "complicated"
expressions, which could need cutting down in some cases)
Improved
error location indication (in some cases the outer function was indicated
instead of the line in the function)
Fixed
issue with declaring size of initialised array (like in "new int[2]{4,6};")
It is no
longer necessary to fully qualify locally declared class names (before you
needed to write like "TestNS.MyClass" even
if you were already in "TestNS")
Fixed bug
with logical operators on enum types (for example on button.Anchor = AnchorStyles.Bottom
| AnchorStyles.Right);
Manual
casting is now supported. Usually, C# IDE Mobile auto casts when possible, but
for example, in "int test = (int)AnchorStyles.Bottom" manual cast is necessary. Also,
this avoids removing casts required in VS.
Fixed bug
with multiple "if"/"else if"/"else"
structures
"static"
keyword now works for arrays and generics, also fixed a problem with indexed
assignments
Added
support for nested classes (like System.Windows.Forms.ListView+SelectedIndexCollection)
Added
support for double type
Improved
comment and string parsing (to avoid "//" making a mess in strings)
Added
"Menu/Edit/Advanced/Format document" to automatically format the C#
code in a compact and indented text
Added new
useful entries in the "Menu/Insert code" menu
Corrected problem
with indexers on collections when polymorphism is involved
Improved
support for CSS plugins (when plugin
contains multiple windows)
Corrected
problem with some Events
Fixed
problem with error localisation
Added
support for multi dimensional arrays (as in "int[,]
test=new int[5,4];")
Included
new Windows Forms Designer (yes, you now have a Windows Form designer usable
directly on the PPC) developed by Jean (http://pagesperso-orange.fr/asnora/Control%20Editor/Control%20Editor.htm)
Added
support for compiled User Plugins (DLL instead of css)
Corrected
issue with "Format document"
Added
replacement File Dialog for smartphones on which the
default .NET2CF FileDialog DLL is missing (this seems
to be the case sometimes)
Added
support for user DLLs: You can now place your own CF DLLs (generated with
Visual Studio for example) in the "UserDLLs"
folder and call your functions within them (you can create your API for example
in a native CF DLL and call these functions from your C# IDE
Added
support for multi threading
Added
support for do/while loop
Added
support long type
Fixed bug
with RelationalOp
Improved
error location (line number)
Enabled
Paint and MouseMove events