How to compile hlsl shader file in Visual Studio C# project
Asked Answered
I

2

7

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?

Incessant answered 18/5, 2016 at 14:2 Comment(0)
S
10

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.

Splatter answered 28/4, 2017 at 9:33 Comment(0)
C
3

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.

Captious answered 19/5, 2016 at 12:31 Comment(1)
This is indeed a nice workaround. Setting the output object file name of the HLSL files to $(SolutionDir)<main project name>\%(Filename).cso. And then adding the cso file as a content file to the main project with the 'copy always' or 'copy if newer' did the trick.Incessant

© 2022 - 2024 — McMap. All rights reserved.