在.NET项目中,我有几个从本机DLL导入的函数。
目前,要将本机DLL添加到项目中,它们将被复制到C#项目的根目录,其属性Build action
将设置为Copy to output directory
。
是否有更好的工作流来捆绑本机DLL?
答案 0 :(得分:1)
一个选项,如果您需要单个exe部署,它特别有用,就是将DLL作为资源嵌入到清单中。这与通常用于创建“通用二进制文件”的方法类似,可以在单个文件的X86或X64平台上运行。在这种情况下,您将64位版本嵌入到32位版本中,并在需要时在运行时将其解压缩。您可以通过Sysinternals二进制文件看到它。
在您的情况下,您将在托管可执行文件中嵌入本机二进制文件,然后在运行时将其作为IO流加载或提取它并从提取的路径引用它。在任何一种情况下,您都不必担心“丢失”资源,因为它是您项目的一部分。
如果您决定走这条路,那么已经多次提供了如何做的答案。这是一个这样的问题: Embedding unmanaged dll into a managed C# dll