The other reply wouldn't work. Embedded resources are stored differently than Win32 resources (in C/C++, these would be referenced in the .rc file). There are many ways you can do this. You can use the command-line compiler (csc.exe) and specify the /win32res: switch along with the path to a .res file that contains your win32 resources. In Visual Studio 2005, you will be able to specify this in the environment, which wasn't available in Visual Studio .NET 2002 and 2003. You can also - after compiling - open the executable (.EXE or .DLL) in Visual Studio. That will show you your resource section. You can import icons and other resources types into the PE/COFF executable (the executable format on Windows). If you sign your assemblies (and there's no reason not to - it's easy), you should resign them to make sure the hash is correct (shouldn't be a problem, but follow along anyway). Use sn.exe -R MyApp.exe KeyPair.snk, where MyApp.exe is the assembly to be signed (of course) and KeyPair.snk is the path to the key pair you used to sign the assembly in the first place. Usually it's a good idea to enable delayed signing (using the AssemblyDelaySignAttribute) and sign it later anyway, and if you use Authenticode to sign the assembly (the PE/COFF executable, actually) then you'll definitely need to resign it after modifying it (or just don't sign it before modifying it anyway). Again, Visual Studio 2005 will include this functionality into the IDE, which will be nice. Alternatively, you might consider just using a native resource-only DLL with the icons you want. Create a new (unmanaged) C or C++ DLL project, add your resources (icons, bitmaps, AVIs, etc.), compile and distribute. The only problem with this approach is that Fusion (the assembly binder which can work seemlessly over the Internet) won't grab it - it only works with .NET assemblies. With installation deployments or (presumably) ClickOnce - a new touchless deployment in .NET 2.0 - this won't be a problem.
Microsoft MVP, Visual C# My Articles