diff --git a/util/test/demos/demos.vcxproj b/util/test/demos/demos.vcxproj
index 99bd79592..e157c3731 100644
--- a/util/test/demos/demos.vcxproj
+++ b/util/test/demos/demos.vcxproj
@@ -446,36 +446,82 @@
-
-
- d3dcompiler_47.dll
- PreserveNewest
- false
-
-
- d3dcompiler_47.dll
- PreserveNewest
- false
-
-
- dxcompiler.dll
- PreserveNewest
- false
-
-
- dxcompiler.dll
- PreserveNewest
- false
-
-
- dxil.dll
- PreserveNewest
- false
-
-
- dxil.dll
- PreserveNewest
- false
-
-
+
+
+
+
+
+
+
+
+
+
+
+using System;
+using System.Diagnostics;
+using System.Linq;
+using System.Runtime.CompilerServices;
+
+namespace DXCEnumerateAndCheck {
+ public class GetDXCDLL : Microsoft.Build.Utilities.Task {
+ public override bool Execute() {
+ if(BitnessFolder == "Win32") BitnessFolder = "x86";
+
+ string[] sdkPathsCheck = SDKPath.Split(';');
+
+ foreach(string sdkPathCheck in sdkPathsCheck)
+ {
+ try
+ {
+ string[] dirs = System.IO.Directory.GetDirectories(sdkPathCheck, "10.*");
+ // sort and reverse so we try from latest to oldest
+ System.Array.Sort(dirs);
+ System.Array.Reverse(dirs);
+
+ // look for the latest dxc.exe available that works
+ foreach(string path in dirs)
+ {
+ string dxcCheck = System.IO.Path.Combine(path, BitnessFolder, "dxcompiler.dll");
+ if(System.IO.File.Exists(dxcCheck))
+ {
+ DXCPath = System.IO.Path.Combine(path, BitnessFolder);
+ return true;
+ }
+ }
+ }
+ catch(Exception ex)
+ {
+ // try next SDK path
+ }
+ }
+
+ // always succeed even if we don't find dxc
+ return true;
+ }
+
+ [Microsoft.Build.Framework.Required] public string BitnessFolder { get; set; }
+ [Microsoft.Build.Framework.Required] public string SDKPath { get; set; }
+ [Microsoft.Build.Framework.Output] public string DXCPath { get; set; }
+ [Microsoft.Build.Framework.Output] public string DebugOut { get; set; }
+ }
+}
+
+
+
+
+ $(WindowsSdkDir_10)\Redist\D3D\$(BitnessFolder)
+
+
+
+
+
+
+
+
+ $(DXCDLLFolder)
+
+
+
+
+
\ No newline at end of file