当nuget包是一个依赖包时,nuget目标文件未执行

时间:2019-09-11 15:42:52

标签: c# nuget nuget-package nuget-spec

我已经创建了自己的nuget软件包,我有一个既包含本机dll也包含C#dll的软件包。我看了这个question,特别是kjbartel答案。在nuspec文件中,将C#程序集放入lib文件夹中,如下所示:

<file src="some_csharp_asmb.dll" target="lib/net40" />

然后将C ++程序集放入Build文件夹中,如下所示:

<file src="some64_cpp_asmb.dll" target="Build/x64" />

除了nuspec文件,我还添加了一个目标文件,该文件安装在nuget软件包的build文件夹中:

<file src="my_package_name.targets" target="Build" />

具有以下内容:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <NativeLibs Include="$(MSBuildThisFileDirectory)**\*.dll" />

        <ContentWithTargetPath Include="@(NativeLibs)">
          <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
          <TargetPath>%(FileName)%(Extension)</TargetPath>
        </ContentWithTargetPath>        

        <None Include="@(NativeLibs)">
            <Link>cpp_x64_native_dlls/%(FileName)%(Extension)</Link>
        </None>

    </ItemGroup>
</Project>

我将此软件包直接安装到某些项目中,并且一切正常。正如我在目标文件中指定的那样,我什至在Visual Studio中获得一个名为 cpp_x64_native_dlls 的快捷方式文件夹。当我直接安装此软件包(将其称为X)时,此方法有效。但是,如果我创建另一个将X作为依赖的程序包Y,那么我会遇到问题。在安装Y时,nuget会忠实地确定Y具有依赖项并安装X。但是,在这种情况下,似乎没有执行上面的X的目标文件。因此,本机dll不会复制到输出目录。

我在做什么错?我可以强制执行目标文件吗?

0 个答案:

没有答案