1)Přidejte do Vaší konzolové aplikace reference na tyto 4 Assembly: PresentationCore, System.Drawing, System.Xaml a WindowsBase.

Takhle se přidává assembly PresentationCore, stačí stisknout OK!
2)Do souboru(ů), kde budeme mít tyto třídy musíme mít tyto using directivy. Jedná se o ty co jsou v Program.cs po vytvoření konzolové aplikace a mnou přidané skrze Resolve:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media.Imaging;3)Vytvoříme si několik tříd. Jsou to výtažky z mých pomocných tříd, jsou tam ponechány pouze metody, které se v této ukázce používají:
class BitmapImageHelper
{
public static BitmapImage MsAppx(string relPath)
{
BitmapImage bs = new BitmapImage(new Uri(ImageHelper.protocol + relPath, UriKind.Absolute));
return bs;
}
}
class ImageHelper
{
public static string protocol = "pack://application:,,,";
public static void SetAssemblyNameForWpfApps(string assemblyName)
{
protocol += "/" + assemblyName + ";component/";
}
public static void RegisterPackProtocol()
{
if (!UriParser.IsKnownScheme("pack"))
new System.Windows.Application();
}
}
class Pictures
{
public static Bitmap BitmapImage2Bitmap(BitmapImage bitmapImage)
{
// BitmapImage bitmapImage = new BitmapImage(new Uri("../Images/test.png", UriKind.Relative));
using (MemoryStream outStream = new MemoryStream())
{
BitmapEncoder enc = new BmpBitmapEncoder();
enc.Frames.Add(BitmapFrame.Create(bitmapImage));
enc.Save(outStream);
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(outStream);
// return bitmap; <-- leads to problems, stream is closed/closing ...
return new Bitmap(bitmap);
}
}
}
class W32
{
[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool SetConsoleIcon(IntPtr hIcon);
}4)Na konec napíšeme do Main() kód, který ikonku ke konzolové aplikaci přidá:
Console.Title = "Konzolova aplikace s logem MS";
//-tempConsoleWithoutSwf je jmenem assembly volajiciho kodu(pokud zdejsi pomocne tridy budou v jinem sestaveni)!
ImageHelper.SetAssemblyNameForWpfApps("tempConsoleWithoutSwf");
ImageHelper.RegisterPackProtocol();
BitmapImage bi = BitmapImageHelper.MsAppx("LogoMicrosoft.png");
Bitmap bmp = Pictures.BitmapImage2Bitmap(bi);
W32.SetConsoleIcon(bmp.GetHicon());
Console.WriteLine("Program dokoncil svou cinnost, kliknutim na enter jej ukoncite.");
Console.ReadLine();5)Nyní už jen zbývá do rootu projektu přidat obrázkový soubor LogoMicrosoft.png, ideálně ve čtvercové velikosti(zde bylo 50x50) a nastavit mu Build action z Content na Resource. Výsledek vypadá pak nějak takto:
