【发布时间】:2018-12-14 00:26:23
【问题描述】:
我无法让 nuget 包正确地将 COM 互操作 DLL 添加到我的项目中。 nuget 文档(尤其是关于 COM 互操作的部分)有点不清楚,所以我希望有人能填补空白。
我正在使用 Visual Studio 2017 企业版。
这是我的 nuspec 文件:
<?xml version="1.0"?>
<package >
<metadata>
<id>MyInteropLibs</id>
<version>1.0.1</version>
<title>Does stuff</title>
<authors>me</authors>
<description>My COM Interop DLL</description>
<summary>ditto</summary>
<copyright>me</copyright>
</metadata>
<files>
<file src="..\AxVCF150.DLL" target="lib" />
<file src="..\VCF150.DLL" target="build" /> <!--the interop-->
<file src="VCF150Interop.targets"/>
</files>
</package>
这是我随附的 Targets 文件 (VCF150Interop.targets):
<Target Name="Unique.VCF150" AfterTargets="ResolveReferences" BeforeTargets="FindReferenceAssembliesForReferences">
<PropertyGroup>
<InteropAssemblyName>VCF150</InteropAssemblyName>
</PropertyGroup>
<ItemGroup>
<ReferencePath Condition=" '%(FileName)' == '{InteropAssemblyName}' AND '%(ReferencePath.NuGetPackageId)' == '$(MSBuildThisFileName)' ">
<EmbedInteropTypes>false</EmbedInteropTypes>
</ReferencePath>
</ItemGroup>
</Target>
据我所知,这正是文档规定的内容,并且在检查时构建的包似乎在包的正确位置具有正确的文件。但是,当我使用 nuget 包管理器将其安装到项目中时,仅添加了 AxVCF150.dll 作为参考,并且完全忽略了互操作 dll。
我错过了什么?
【问题讨论】:
标签: nuget