Nuget Library - Скопируйте DLL библиотеки в текущий каталог проекта - PullRequest
0 голосов
/ 06 января 2019

Итак, чтобы лучше объяснить, что я хотел бы сделать:

Если вы устанавливаете пакет nuget NUnitTestAdapter в свой проект, при создании проекта у вас будет NUnit3.TestAdapter.dll в выходном каталоге вашего проекта.

Я бы хотел сделать то же самое. У меня есть библиотека, которую я упаковываю, но когда я устанавливаю ее в другой проект и собираю ее, моя библиотека не включается, как в NUnit.

Что касается того, почему мне нужно это сделать, я пишу репортер тестов, который выдает отчеты JSON, XML, HTML и т. Д. Для всех выполненных тестов. У меня есть этот запуск в событии AppDomain.CurrentDomain.ProcessExit, однако он ограничен примерно 2 секундами, поэтому, если мои отчеты не создаются в течение 2 секунд, он не будет работать. Поэтому вместо этого при выполнении процесса он выполнит мою DLL-библиотеку отчетов, которая не будет иметь временных ограничений.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Итак, с помощью Leo Liu-MSFT я справился с этим.

Сначала я должен был создать реквизитный файл, как в ответе Лео. Затем мне пришлось создать событие пост-сборки в проекте, скопировав файл props в мой целевой каталог.

copy /Y "$(ProjectDir)$(TargetName).props" "$(TargetDir)$(TargetName).props"

Затем я создал файл nuspec, который копирует props и dll из моего целевого каталога в каталог сборки в пакете nuget

<files>
        <file src="bin\Release\**\Report.props" target="build" />
        <file src="bin\Release\**\Report.dll" target="build" />
    </files>

А затем упаковать библиотеку с помощью nuget pack ###.nuspec

И затем при импорте библиотеки через nuget файл props автоматически проталкивает мои файлы при успешной сборке.

Мне нужно было убедиться, что я назвал файл props тем же именем, что и идентификатор моего проекта.

0 голосов
/ 07 января 2019

Nuget Library - Скопировать DLL библиотеки в текущий каталог проекта

Когда вы скачаете пакет NUnit3TestAdapter и откроете его с помощью обозревателя пакетов NuGet (получите его из Microsoft Store), вы найдете следующее содержимое:

enter image description here

В папке build есть NUnit3TestAdapter.props со свойством CopyToOutputDirectory:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <Content Include="$(MSBuildThisFileDirectory)NUnit3.TestAdapter.dll">
      <Link>NUnit3.TestAdapter.dll</Link>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <Visible>False</Visible>
    </Content>
    <Content Include="$(MSBuildThisFileDirectory)NUnit3.TestAdapter.pdb" Condition="Exists('$(MSBuildThisFileDirectory)NUnit3.TestAdapter.pdb')">
      <Link>NUnit3.TestAdapter.pdb</Link>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <Visible>False</Visible>
    </Content>
    <Content Include="$(MSBuildThisFileDirectory)nunit.engine.dll">
      <Link>nunit.engine.dll</Link>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <Visible>False</Visible>
    </Content>
    <Content Include="$(MSBuildThisFileDirectory)nunit.engine.api.dll">
      <Link>nunit.engine.api.dll</Link>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <Visible>False</Visible>
    </Content>
  </ItemGroup>
</Project>

Итак, когда мы устанавливаем этот пакет в проект, этот файл NUnit3TestAdapter.props будет импортирован в файл проекта, затем файлы dll будут скопированы в выходную папку.

Если вы хотите этого, вы также можете использовать этот метод.

Надеюсь, это поможет.

...