我正在尝试为依赖于 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/