IoC: ProjectReference с ReferenceOutputAssembly = false, но по-прежнему требуется пакет nuget - PullRequest
0 голосов
/ 16 января 2019

Фон

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

Проблема

У меня есть что-то подобное в моем файле csproj уровня приложений.

Это прекрасно работало, но теперь я понял, что он не копирует временные зависимости, то есть пакеты nuget

<ProjectReference Include="..\MyProj.csproj">
  <!-- We don't wish a developer to accidentally reference the DAL tier directly in the UI, only as a dependency. -->
  <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
  <!-- As the composite root (in DI terms) we still want to ensure that the UI tier has a copy of the DAL dll to load up.-->
  <OutputItemType>Content</OutputItemType>
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  <!-- DebugSymbolsProjectOutputGroup copies PDB files, but not for Visual Studio, which is still fine as Visual Studio knows how to get debugging information.  -->
  <Targets>Build;DebugSymbolsProjectOutputGroup</Targets>
</ProjectReference>

Наряду с:

  <PropertyGroup>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
  </PropertyGroup>

Чтение роев билетов на github и блогов, например, несколько:

https://www.erikheemskerk.nl/transitive-nuget-dependencies-net-core-got-your-back/

https://github.com/NuGet/Home/issues/6151

https://github.com/dotnet/sdk/issues/747

И игра со всей комбинацией, которую я могу придумать, похоже, не копирует пакеты nuget.

Единственный способ, который работает:

<ReferenceOutputAssembly>true</ReferenceOutputAssembly>

Какой тип поражает цель держать уровень доступа к данным dll отдельно от уровня приложения.

1 Ответ

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

Просто создайте свою собственную цель копирования, чтобы скопировать то, что вы хотите. В этом нет ничего плохого. И тогда вы сможете удалить ProjectReference, показанный выше.

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