C# 更新到Sharpdx 2.6.2后无法编译hlsl着色器

C# 更新到Sharpdx 2.6.2后无法编译hlsl着色器,c#,directx,hlsl,directx-11,sharpdx,C#,Directx,Hlsl,Directx 11,Sharpdx,我有一个C#项目,使用了SharpDX 2.5.0,一切正常。 我转到了SharpDX的最新稳定版本2.6.2。我的项目编译很好,但在运行时失败,因为它无法编译着色器。我正在使用这行代码: var vertexShaderByteCode = ShaderBytecode.CompileFromFile(ShaderFileName, "Base_VS", "vs_4_0"); 无论着色器文件的实际内容是什么,它都会失败,并出现以下错误: path/to/my/shader.hlsl(1,1)

我有一个C#项目,使用了SharpDX 2.5.0,一切正常。 我转到了SharpDX的最新稳定版本2.6.2。我的项目编译很好,但在运行时失败,因为它无法编译着色器。我正在使用这行代码:

var vertexShaderByteCode = ShaderBytecode.CompileFromFile(ShaderFileName, "Base_VS", "vs_4_0");
无论着色器文件的实际内容是什么,它都会失败,并出现以下错误:

path/to/my/shader.hlsl(1,1): error X3000: Illegal character in shader file
我认为这与文件的UTF-8编码有关,但尝试各种编码并不能解决问题。
有没有其他人遇到过类似的问题或有什么建议?

我终于找到了解决办法。 如果有人遇到同样的情况,我会找到以下解决方法:

  • 这确实是一个编码问题。由于某些原因,我的着色器文件的格式不再兼容,并且由于某些原因,仅在Visual studio中更改编码并不能解决问题。文件开头似乎还有一些不可见的字符(可能是BOM?)
  • 从头开始(从记事本)重新创建文件成功了

虽然很旧,但我还是回应: 新VisualStudio文本文件的默认编码是UTF-8和BOM。这意味着文件的前3个字符是?»?
那些字符是“非法的”

来源: