How-To: Create a New XNA IceCream Based Project

This seems like a lot of steps, but it’s really quite a simple process. Please let me know in the comments if you need help or I made an error. Have fun!
  1. In Visual Studio, create your XNA 4 Game project.
  2. Add a reference to the IceCream DLL, or optionally include it and MilkShake in your project as source so you can have much better debug information if things break or don’t behave as expected. Be sure to include IceCream, Milkshake, and MilkshakeLibrary if you go the source route. Also, you will a compiled EXE of  Milkshake if you won’t be building it in your project.
    I suggest you include all 3 projects as source in your solution, but it’s not required.
  3. Create a new text file called “Game.icproj” in your game project in Visual Studio (not in the Content project!).
  4. Ensure the Build Action is None and Copy to Output Directory is “Copy if newer”.
  5. Open Game.icproj for editing and modify it to look something like this (change “ProjectName” to your project name)
    <?xml version="1.0"?>
    <IceCreamProject xmlns:xsi="" xmlns:xsd="">
      <ContentFolderRelativePath />
      <LastOpenedScene />
  6. Create another new file, this time in your Content project, called Set the Build Action to None and Copy to Output Directory to “Copy if newer”.
  7. Copy-paste in the following contents:
        <Components />
        <SceneItems />
        <Templates />
  8. Open Milkshake.exe and open your newly created Game.icproj file with the Open Project button.
  9. It should load without an errors and you’ll still be staring at a gray screen. However, the toolbar will have updated and you can now create a new scene. Click the New Scene button.
  10. When you’re ready, clicking the Save All button will prompt you to give your new scene a name and location. Save it in your game’s Content project directory. Be sure to include this file in your project and set Build Action to None and Copy to Output Directory to “Copy if newer”.
  11. Anytime you add new assets with the IceCream UI (like a spritesheet), you’ll need to include them in your Visual Studio Content project and ensure they make it in the compiled Content directory.
  12. Navigate to your Game1.cs file (or whatever you’ve renamed it to) and modify it to the following contents (modify the namespace for your game):
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using Microsoft.Xna.Framework;
    using Microsoft.Xna.Framework.Audio;
    using Microsoft.Xna.Framework.Content;
    using Microsoft.Xna.Framework.GamerServices;
    using Microsoft.Xna.Framework.Graphics;
    using Microsoft.Xna.Framework.Input;
    using Microsoft.Xna.Framework.Media;
    namespace ProjectName
        /// <summary>
        /// This is the main type for your game
        /// </summary>
        public class Game1 : IceCream.Game
            public Game1() {
                ContentDirectoryName = "ProjectNameContent";
  13. Set your Content directory to be called <project name>Content instead of just Content. Ensure you’ve added a reference to IceCream in your game project. Build and run!

That’s it! Your base IceCream project is all setup!

5 thoughts on “How-To: Create a New XNA IceCream Based Project”

  1. Thanks for the simple explanation! One question though.. I’m getting an error loading and I came back and looked at step 13 more closely:

    “Set your Content directory to be called Content instead of just Content.”

    How would I do this? And is there a problem with leaving ContentDirectoryName set to “Content” rather than prepending the project name?

    Thanks in advance!

    1. Hi Jeff,

      The reason for the directory name is that IceCream isn’t yet consistent on handling content directory names, and I’ve found it easiest if I follow the ProjectNameContent directory naming convention. So, unfortunately, it’s mostly just because IceCream isn’t well suited for any other name right now.

      To rename it, click your Content project in the Solution Explorer pane and view the Properties pane (not right click->Properties, just the Properties pane). One of them is called Content Root Directory, and that’s the one.

      Hope this helps!

  2. hi, thanks for the explanation.
    i’m new with XNA and Visual Studio and for me it’s hard to understand some steps. for example, step 3 and 6.
    could you explain it better or put some screenshots? thanks

  3. Hi, I’ve done everything you have wrote. In the end i get nothing but an empty blue scene.

    I dunno but maybe that’s the reason: I create my scenes by running Milkshake.exe in XNA4\Milkshake\bin\x86\Debug directory. When i run and load my icproj I get

    “System.UnauthorizedAccessException: ‘C:\Ewf Projeler\ImagineCup\XNA4\Milkshake\bin\x86\Debug\Milkshake.exe’ access denied.
    path: System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
    path: System.IO.File.Delete(String path)
    path: Milkshake.MilkshakeForm.CopyAssembliesFromProject() C:\Ewf Projeler\ImagineCup\XNA4\Milkshake\MilkshakeForm.cs: line 670”

    error. After closing the error by clicking okay everything seems fine. Then I prepare my scene and after i save the scene to my content solution only a blue screen appears.

    I’ve uploaded my files, can you please look at it and tell me where I’m wrong at? I’ll really appreciate that if u could (Also, I’ve added some lines related to this blog post: after I’ve tried everything you have mentioned in your post, still didn’t work):

Leave a Reply

Your email address will not be published. Required fields are marked *