Как использовать файл nuget.targets для сохранения двух библиотек DLL с одинаковым именем, но с другой целевой архитектурой, в выходные соответствующие папки в выходном каталоге

У меня проблема с библиотекой SQLite.Interop.dll. Я должен использовать дистрибутив x64 и x86. Мне также нужно, чтобы они оба были скопированы в выходной каталог в

x64/SQLite.Interop.dll

и

x86/SQLite.Interop.dll

папки соответственно.

Я создал пакет Nuget со следующим файлом nuspec:

<?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>

Как заархивировать это после сборки приложения?


person Karol Haliński    schedule 30.11.2018    source источник
comment
В вашем примере может быть опечатка, но в вашем MSBuildThisFileDirectory не должно быть @. Это должно быть $. @ относится к группам элементов, а $ относится к свойствам. MSBuildThisFileDirectory — это свойство.   -  person daughey    schedule 01.12.2018
comment
Это была опечатка. Спасибо.   -  person Karol Haliński    schedule 03.12.2018
comment
Извините, просто для уточнения. Вы имеете в виду, что это была опечатка в примере, и вопрос все еще требует ответа, или что опечатка была основной причиной, и вопрос был решен?   -  person daughey    schedule 03.12.2018
comment
Я имею в виду, что это была опечатка с @ и $. Но удаление этой опечатки не решило проблему.   -  person Karol Haliński    schedule 06.12.2018


Ответы (1)


Я добавил ссылку SQLite.Core на проекты, которые нуждались в SQLite.Interop в их выходном каталоге, поскольку в его пакете nuget были необходимые сценарии.

Я знаю, что это своего рода обходной путь, но он решил мою проблему за счет небольшого справочника по библиотеке небольшого размера.

person Karol Haliński    schedule 06.12.2018