Debug-Compatibility Win32 Debug-Performance Win32 Release-Compatibility Win32 Release-Performance Win32 {488B77AD-58DF-4E01-9329-67B20D486860} libsnes 8.1 8.1 DynamicLibrary true v140_xp NotSet DynamicLibrary true v140_xp NotSet DynamicLibrary false v140_xp true NotSet DynamicLibrary false v140_xp true NotSet ..\..\output\dll\ libsneshawk-32-performance .obj\$(Configuration)\ ..\..\output\dll\ libsneshawk-32-compatibility .obj\$(Configuration)\ libsneshawk-32-compatibility ..\..\output\dll\ .obj\$(Configuration)\ libsneshawk-32-performance ..\..\output\dll\ .obj\$(Configuration)\ Level3 Disabled false $(ProjectDir)../bsnes HOOKS;BIZHAWK;PROFILE_PERFORMANCE;GAMEBOY;%(PreprocessorDefinitions) true false /Zc:threadSafeInit- %(AdditionalOptions) true Windows Level3 Disabled false $(ProjectDir)../bsnes HOOKS;BIZHAWK;PROFILE_COMPATIBILITY;GAMEBOY;%(PreprocessorDefinitions) true false /Zc:threadSafeInit- %(AdditionalOptions) true Windows Level3 Full true false true $(ProjectDir)../bsnes HOOKS;BIZHAWK;PROFILE_PERFORMANCE;GAMEBOY;%(PreprocessorDefinitions) None AnySuitable Speed true StreamingSIMDExtensions Fast MultiThreaded /Zc:threadSafeInit- %(AdditionalOptions) true true true Windows Level3 Full true false true $(ProjectDir)../bsnes HOOKS;BIZHAWK;PROFILE_COMPATIBILITY;GAMEBOY;%(PreprocessorDefinitions) None MultiThreaded Speed true AnySuitable /Zc:threadSafeInit- %(AdditionalOptions) StreamingSIMDExtensions Fast true true true Windows true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true false true false true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true false true false true true true true true true true true true true true true true true true true true true true true true true true true true true true true (); foreach( var item in ItemList ) { var filename = item.GetMetadata("Filename"); //assign reused filenames to increasing numbers //assign previously unused filenames to 0 int assignment = 0; if(assignmentMap.TryGetValue(filename, out assignment)) assignmentMap[filename] = ++assignment; else assignmentMap[filename] = 0; var thisFileOutdir = Path.Combine(OutputDir,assignment.ToString()) + "/"; //take care it ends in / so /Fo knows it's a directory and not a filename item.SetMetadata( "ObjectFileName", thisFileOutdir ); } OutputItemList = ItemList; ItemList = new Microsoft.Build.Framework.ITaskItem[0]; ]]>