6
votes

I would like to compile a hlsl shader file in my C# project in Visual Studio 2015. With a C++ project I immediately get the correct properties if I add an hlsl file like the picture below:

HLSL build properties in C++

However when I want to do this in my C# project (with SharpDX) I do not get such options and thus can't compile to an CSO file for my project.

Does anyone know a solution for this?

2

2 Answers

9
votes

There's now a NuGet package, Microsoft.HLSL.CSharpVB, that adds support for HLSL shader properties to C# and VB projects:

This package installs MSBuild support for HLSL compilation in C# and VB projects.

Please reload your project or restart Visual Studio for the new shader Build Actions to appear in the properties window.

3
votes

You can't do this directly in a C# project, as the Visual Studio HLSL compilation built-in integration is only working and accessible from a C++ project.

Though you could put an empty C++ project in the same solution, and then add and configure your HLSL files from there, and then reference generated cso files from your C# project as content (and add a project dependency from C# -> C++ project)... With some MSBuild trickery, you could also copy the generated content automatically into your C# project.