Please see this C # library http://discutils.codeplex.com/ , it is a very complete library and supports many file systems (including VHD, VHDx, ISO, EXT, HFS, HFSPlus, etc.)
[, vhdx vhd].
long diskSize = 30 * 1024 * 1024;
using (Stream vhdStream = File.Create(@"C:\TEMP\mydisk.vhdx"))
{
Disk disk = Disk.InitializeDynamic(vhdStream, diskSize);
BiosPartitionTable.Initialize(disk, WellKnownPartitionType.WindowsFat);
using (FatFileSystem fs = FatFileSystem.FormatPartition(disk, 0, null))
{
fs.CreateDirectory(@"TestDir\CHILD");
}
}