加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

NuGet:在哪里放置非托管图书馆的dll?

发布时间:2020-12-13 19:54:39 所属栏目:Windows 来源:网络整理
导读:我试图创建一个依赖于ghostscript的库的Nuget包,因此引用gsdll32.dll – 一个非托管库.我不能只包括一个标准的dll参考.我在哪里把它放在nuget目录结构中? 上述参考可以工作,但它实际上修改了您的post build事件来推送文件,如果您有这种情况,可能无法实际解
我试图创建一个依赖于ghostscript的库的Nuget包,因此引用gsdll32.dll – 一个非托管库.我不能只包括一个标准的dll参考.我在哪里把它放在nuget目录结构中?
上述参考可以工作,但它实际上修改了您的post build事件来推送文件,如果您有这种情况,可能无法实际解决您的问题.

我们遇到的问题是依赖DLL无法注册,但必须与另一个DLL并行存在,需要由nuget注册,因此需要存在于lib目录中,但不能注册.

nuspec参考现在允许您指定lib目录中的哪些DLL在visual studio项目中明确注册,您只需要在元数据区域中的nuspec文件中添加一个显式引用列表(如果这不存在默认行为的nuget是尝试注册lib下的所有内容).

这是一个我的意思的例子nuspec文件:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <id>SomePackageID</id>
        <version>1.0.1</version>
        <title>Some Package Title</title>
        <authors>Some Authors</authors>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>Blah blah blah.</description>
        <references>
            <reference file="ceTe.DynamicPDF.Rasterizer.20.x86.dll" />          
        </references>
    </metadata>
    <files>
        <file src="SomeNetworkLocationceTe.DynamicPDF.Rasterizer.20.x86.dll" target="libceTe.DynamicPDF.Rasterizer.20.x86.dll" />
        <file src="SomeNetworkLocationDPDFRast.x86.dll" target="libDPDFRast.x86.dll" />
    </files>
</package>

您可以看到,ceTe.DynamicPDF.Rasterizer.20.x86.dll需要注册,但DPDFRast.x86.dll只需要存在于该目录中以支持其他DLL,并且不会被注册,但通过一些动态引用魔术将最终被复制到目标bin目录,因为visual studio看到第一个DLL依赖于第二个DLL.

这是原来的nuspec reference.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读