One of the most frequently asked questions about the CS-script is a question about running the script engine on PocketPC.
Unfortunately Compact Framework (CF) is not ready yet for running dynamically loaded/compiled managed code.
The reason for this is that CF does not have implementation of the C# ICodeCompiler. Another words the following code would not compile:
ICodeCompiler compiler = (new CSharpCodeProvider()).CreateCompiler();
If, in any future version of CF, Microsoft includes the CSharpCodeProvider implementation the CS-Script will work on such platform.
Starting from version 1.3 CS-Script supports pluggable custom compilers
. It means that if you have third-party implementation of the CLR compiler that can work on CF it can be used instead of Microsoft compiler and CS-Script engine will be able to run C# scripts under CF.
Basically you need any workable C# compiler either managed or native that would work on CF.
I have tried to resolve the problem by isolating the compiler from full version of .NET Framework and bringing it on CF but did not succeeded. Also I was trying to use third-party compilers (after all it does not matter what software does the conversion C#->IL). The Pocket C# compiler looked promising but I could not get it working. Even despite the fact that I have seen some reports dated 2004 that it actually did work.
However CS-Script provides some very limited support for CF. It comes in a form of cfbuild.cs
script, which allows building a CF compatible managed executable from any appropriate the C# script.
You can compile the "Hello-World" script (hello.cs
) into executable for WinCE5.0 with the following command:
//cscs cfbuild hello
This is the content of the hello.cs
static public void Main(string args)
MessageBox.Show("Just a test!");
The produced executable can be run on the MS Device emulator or real PocketPC.
MS Device emulator:
You can also use cfbuild.cs
to install/uninstall the shell extensions for building CF based executables from the scripts:
//cscs cfbuild /i
Note: when you execute cfbuild.cs
for the first time you will be asked to specify the location of the CF installed on your PC. You have to do it only once (cfbuild.cs
will remember CF location for the next sessions.