msbuild PackageReference.PrivateAssets = Кажется, все не работает - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть тестовый проект, который ссылается на NUnit3TestAdapter.Я не копирую эту ссылку на проекты, которые зависят от этого.

Я думал, что установка PrivateAssets = Все сделает это, но, видимо, я неправильно понимаю, как это работает, потому что это не дает желаемого эффекта.

Вот код:

Rollup \ Rollup.csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net472</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include="..\UITests\UITests.csproj"/>
  </ItemGroup>

</Project>

UITests \ UITests.csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net472</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="NUnit3TestAdapter" Version="3.11.2">
      <PrivateAssets>All</PrivateAssets>
    </PackageReference>
  </ItemGroup>

</Project>

Directory.Build.rsp

.\Rollup.sln /restore /v:m

После запуска msbuild все собрано, но я вижу, что NUnit3TestAdapter находится в папке bin для накопительного пакета.

Чего мне не хватает?

(https://github.com/Microsoft/msbuild/issues/3996)

1 Ответ

0 голосов
/ 09 декабря 2018

PrivateAssets работает, как и ожидалось, но пакет NuGet тестового адаптера NUnit добавляет цель сборки MSBuild, которая добавляет несколько файлов DLL в качестве элементов содержимого в проект, которые затем переходят через сборку - это имеет тот же эффект, что иесли вы добавили текстовый файл и задали его свойство «Копировать в выходной каталог».

NUnit3TestAdapter.props содержит определения, такие как:

<Content Include="$(MSBuildThisFileDirectory)NUnit3.TestAdapter.dll">
  <Link>NUnit3.TestAdapter.dll</Link>
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  <Visible>False</Visible>
</Content>

Эти файлы должны отображаться, если вы нажмете "«Показать все файлы» в обозревателе решений Visual Studio.

Обратите внимание, что тестовые проекты не должны быть упакованы или на них есть ссылки.Они должны быть листовыми проектами.Шаблоны тестового проекта даже содержат определение <IsPackable>false</…>, а основной пакет XUnit также добавляет его в качестве импортированного файла MSBuild.Среды тестирования предполагают, что вы будете использовать их библиотеки абстракций, а не сборки времени выполнения / пакеты тестовых адаптеров для проектов, которые совместно используют тесты или логику тестирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...