The DLLs that .NET wants must be COM DLLs. A COM DLL is a special DLL that contains objects and interfaces. The important part is that a COM DLL is self-describing as it is meant to be interfaced to, even more than a standard C-style DLL. A C-style DLL exposes functions (and a little more), but isn't self-describing.
To use a C-style DLL in .NET you'll have to use DllImport (see the help) and expose the functions yourself. For example, to expose the function SendMessage in the windows DLL "user32.dll", you use:
C#:
[DllImport("user32")]
private static extern int SendMessage(int hwnd, int msg, int wparam, int lparam);
If you want to mainting (not re-write) your old DOS-based programs, you're likely stuck with Turbo-C, Turbo-Pascal, etc. Borland, as far as I know, is the only one who made a good DOS-based compiler for writing robust "windows"-like apps.
.NET is for Windows applications though there are ports for other OS's. I can almost guarantee that there will *never* be a port for DOS as MS owns DOS and won't take the time to do it.
For $600, the retail clients can buy a PIII 700 and upgrade to some version of Windows. The UI enhancements over DOS are well worth it in terms of screen space alone. But if they have their amber screens and like them, I wouldn't try to change it and that means staying with Turbo-C.
-Nerseus