This gets asked all the time on our internal alias, so I am sure google gets asked a lot, here is my effort to provide an answer. 


No, the .NET Framework V1.0\V1.1 does not support Beep()… In those platforms you can

(a)     PInvoke to Win32:

public static extern bool Beep(int freq,int duration);


(b)     See MessageBeepType


(c)     Use the Beep sound in the VB assembly
Add a reference to the Microsoft.VisualBasic.dll assembly and use




Of course in Whidbey (.NET Framework V2.0) we support Beep() directly in the Framework:

Via Console.Beep() and Console.Beep(int frequency, in duration).


Update (11/22/05):

For the .NET Compact Framework I'd suggest you use:

namespace CFBeep
    public partial class Form1 : Form
        public static extern int PlaySound(
            string szSound,
            IntPtr hModule,
            int flags);

        public Form1()

        private void button1_Click(object sender, EventArgs e)
            PlaySound(@"\Windows\Voicbeep", IntPtr.Zero, (int)(PlaySoundFlags.SND_FILENAME | PlaySoundFlags.SND_SYNC));


    public enum PlaySoundFlags : int
        SND_SYNC = 0x0,     // play synchronously (default)
        SND_ASYNC = 0x1,    // play asynchronously
        SND_NODEFAULT = 0x2,    // silence (!default) if sound not found
        SND_MEMORY = 0x4,       // pszSound points to a memory file
        SND_LOOP = 0x8,     // loop the sound until next sndPlaySound
        SND_NOSTOP = 0x10,      // don't stop any currently playing sound
        SND_NOWAIT = 0x2000,    // don't wait if the driver is busy
        SND_ALIAS = 0x10000,    // name is a registry alias
        SND_ALIAS_ID = 0x110000,// alias is a predefined ID
        SND_FILENAME = 0x20000, // name is file name
        SND_RESOURCE = 0x40004, // name is resource name or atom