SharpDX v4.0.1 sharpdx_direct3d11_effects_x64.dll DLLNotFoundException

SharpDX v4.0.1 sharpdx_direct3d11_effects_x64.dll DLLNotFoundException

去年,我用 SharpDX 问了这个问题 。Direct3D11.Effects.dll 版本 3

现在我在 版本 4 上尝试同样的事情。

我希望将 sharpdx_direct3d11_effects_x64.dll 和 sharpdx_direct3d11_effects_x32.dll 这两个 DLL 添加到 Visual Studio 项目中,但它们没有。

这两个DLL的部署机制有变化吗?

Has the deployment mechanism for these two DLLs changed?

是的,这个包 xoofx 的作者已经从版本 4.0.0-ci120 更改了这两个 DLL 的部署机制。您可以查看 4.0.0 release notes about Updated D3D11.Effects to the new project system..

此外,您可以下载此包的两个版本,检查不同 NuGet Package Explorer:

根据官方文档:Supporting multiple .NET framework versions:

If you have architecture-specific assemblies, that is, separate assemblies that target ARM, x86, and x64, you must place them in a folder named runtimes within sub-folders named {platform}-{architecture}\lib{framework} or {platform}-{architecture}\native.

所以部署机制的改变是正确的。

好的,感谢@Leo-MSFT 上面的回答,我让这个工作。

  1. 我必须下载 NuGet package from here.
  2. 重命名为 *.zip 并解压缩
  3. 将文件夹 runtime/win-x64/sharpdx_direct3d11_1_effects.dll 和 runtime/win-x86/sharpdx_direct3d11_1_effects.dll 复制到我的项目并设置为始终复制

这没有用,所以我现在将 win-x64/sharpdx_direct3d11_1_effects.dll 复制到项目根目录并重命名为 win-x64/sharpdx_direct3d11_1_effects_x64.dll 并设置为“始终复制”并且它起作用了。

我确定这不是故意的,所以我 reported a bug to SharpDX on Github