如何使用 nuget.targets 文件将两个具有相同名称但目标体系结构不同的 DLL 保存到输出目录中的输出各自文件夹中

How to use nuget.targets file to save two DLLs with same name but different target architecture into output respective folders in output directory

我对 SQLite.Interop.dll 库有疑问。我需要使用它的 x64 和 x86 发行版。我还需要将它们都复制到

中的输出目录中

x64/SQLite.Interop.dll

x86/SQLite.Interop.dll

分别是文件夹。

我使用以下 nuspec 文件创建了一个 Nuget 包:

<?xml version="1.0"?>
<package >
  <metadata minClientVersion="2.5">
    <id>SQLite.Interop</id>
    <version>1.1.18</version>
    <authors>SQLite</authors>
    <owners>That's me</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>That's for me.</description>
    <copyright>Copyright 2018</copyright>
    <tags>SQLite Interop ofcMe</tags>
    <dependencies>
    </dependencies>
  </metadata>
    <files>
        <file src="content\x86\SQLite.Interop.dll" target="content\x86\SQLite.Interop.dll" />
        <file src="content\x64\SQLite.Interop.dll" target="content\x64\SQLite.Interop.dll" />
        <file src="bin\Debug\x64\SQLite.Interop.dll" target="Build\x64\" />
        <file src="bin\Debug\x86\SQLite.Interop.dll" target="Build\x86\" />
        <file src="SQLite.Interop.targets" target="Build\" />
    </files>
</package>

以及以下 SQLite.Interop.targets 文件:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <None Include="@(MSBuildThisFileDirectory)x64\SQLite.Interop.dll">
      <Link>SQLite.Interop.dll</Link>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
    <None Include="@(MSBuildThisFileDirectory)x86\SQLite.Interop.dll">
      <Link>SQLite.Interop.dll</Link>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>

应用程序构建后如何存档?

我在其输出目录中添加了一个 SQLite.Core 对需要 SQLite.Interop 的项目的引用,因为它的 nuget 包中有必要的脚本。

我知道这是一种变通方法,但它解决了我的问题,但代价是一些小的库引用。