【发布时间】:2016-12-05 09:39:49
【问题描述】:
我有外部 dll,我想将其包含在项目中。 我无法将此 dll 添加为标准库(它是 c++ dll)。
我正在为外部 dll 使用 DllImport。
[DllImport("MyExternal.dll")]
public static extern UInt32 Authent([Out] UInt32[] LibRandNum);
如果我在主项目中包含 dll,这将起作用:
"publishOptions": {
"include": [
"MyExternal.dll"
]
}
但它不适用于类 libaray(类库 project.json 文件中的相同发布选项)。
如果我将 dll 添加到“C:\windows\system32”,则它可以正常工作。但我不想假设 dll 存在,我想从项目库中添加 dll。
编辑 1:
我找到了"How to use native dependencies",但仍然无法正常工作。 我不知道如何使用 nuget 包,但我想尽可能避免使用 nuget。
编辑 2:
类似于this,但在核心类库中。
编辑 3
我试过了:
"copyToOutput": {
"include": [ "MyExternal.dll" ]
}
仍然没有成功。
编辑 4
我创建了最小的解决方案(.NET 核心 - Visual Studio 2015)。你可以到这里:http://www.filedropper.com/myapp_1
类库中有dll文件(SGLW64.dll)
如果您将此 dll 添加到 C:\Windows\System32 中,则它可以正常工作。
【问题讨论】:
-
外部dll是否复制到本地dll/exe所在的位置?
-
我以为是 dll/exe 所在的位置。但是现在我找不到了。所以我不知道。
-
如果它不在 dll/exe 旁边,则在导入时将无法找到它,因此无法正常工作
-
创建一个包含本机 dll 的包,并使其成为使用它的包的依赖项。确保包含本机 dll 的包具有正确的结构。我不久前写了一篇关于此的博客文章:blog.3d-logic.com/2015/11/10/…。虽然我在 dnx 时代写过,但大部分内容仍然适用(项目引用除外)
标签: c# dll asp.net-core