dll - 在哪里放置非托管库的 dll?

标签 dll dependencies unmanaged nuget

我正在尝试为依赖于 ghostscript 的库创建 Nuget 包,因此引用 gsdll32.dll - 一个非托管库。我不能只包含一个标准的 dll 引用。我应该把它放在 nuget 目录结构中的什么位置?

最佳答案

添加 build文件夹到包,如果包例如具有 ID MyPackage , 添加一个名为 MyPackage.targets 的 MSBuild 目标文件到这个文件夹。重要的是 .targets文件与 .nuspec 同名文件。在 .nuspec文件你必须有这样的部分:

<files>
    <file src="lib\*.*" target="lib" />
    <file src="build\MyPackage.targets" target="build" />
</files>

这将在项目文件中添加一个指向 .targets 的 MSBuild 元素。文件。

此外,要仅注册托管 dll,请添加如下所示的部分:
<references>
    <reference file="MyManaged.dll" />
</references>
.targets文件应如下所示:
<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
  <Target Name="CopyMyPackageFiles" AfterTargets="AfterBuild"> 
    <ItemGroup> 
      <MyPackageFiles Include="$(MSBuildThisFileDirectory)..\lib\*.*"/> 
    </ItemGroup> 
    <Copy SourceFiles="@(MyPackageFiles)" DestinationFolder="$(OutputPath)" > 
    </Copy> 
  </Target> 
</Project>

现在,全部 文件 - 包括非托管文件 - 将在构建后复制到项目输出文件夹(例如\bin\debug)。

关于dll - 在哪里放置非托管库的 dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10198428/

相关文章:

c# - 在传递给非托管代码之前固定一个可更新的结构?

c# - 从 VTable 调用结构中的非托管函数

dll - 是否有与 gcc --kill-at 等效的 Visual C++?

windows - 您可以将 OCaml 项目本地编译为 Windows 库吗?

c++ - GCC 和预编译 header

dependencies - 在保持最大可移植性的同时提供原生工具

python - C++ DLL 返回从 Python 调用的指针

C++:我什么时候需要 std::vector 的共享内存分配器?

java - 如何解决各种 log4j 的包冲突?

c# - 如何获取 C# 对象上的非托管指针?