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

问题描述 投票:0回答:1

我的 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>

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

msbuild nuget nuget-package nuspec
1个回答
0
投票

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

我知道这是一种解决方法,但它以一点图书馆参考为代价解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.