2

我有托管库依赖于本机库的 NuGet 包。我想将本机依赖项复制到 \\UnmanagedLibraries\Windows\x86\ 文件夹,并且我制作了以下文件,该文件被复制到构建文件夹:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="CopyNativeReferences">

    <Message Text="$(MSBuildThisFileDirectory) => $(OutDir)\UnmanagedLibraries\Windows\x86\"></Message>    

     <Copy SourceFiles="$(MSBuildThisFileDirectory)..\native\UnmanagedLibraries\Windows\x86\SIMDArrayInstructions.dll" 
      DestinationFolder="$(OutDir)\UnmanagedLibraries\Windows\x86\" 
      SkipUnchangedFiles="true" />

    </Target>

   <PropertyGroup>
     <AfterBuildDependsOn>
        CopyNativeReferences;
     </AfterBuildDependsOn>
    </PropertyGroup>

    <Target Name="AfterBuild" DependsOnTargets="$(AfterBuildDependsOn)"/>
</Project>

它对一个包运行良好,但我有多个 NuGet 包需要复制它们的本机引用。安装第二个包后,不会复制第一个包的本机引用。似乎“AfterBuild”被新包覆盖了。

我还更改了目标名称和 AfterBuildDependsOn 以确保其他包不共享相同的目标变量名称,但这没有帮助。

我该如何解决这个问题?

4

1 回答 1

3

定义的属性组应如下所示:

PropertyGroup>
 <AfterBuildDependsOn>
    $(AfterBuildDependsOn);
    CopyNativeReferences;
 </AfterBuildDependsOn>
</PropertyGroup>
于 2014-07-24T12:19:47.590 回答