Проект NetCore показывает управляемые dll из пакета nuget непосредственно под корневым уровнем проекта - PullRequest
0 голосов
/ 11 мая 2018

Я создал пакет Nuget, который содержит сторонние библиотеки.(Он предназначен для netstandard2.0 и net462)

Библиотеки находятся на уровне "build" в пакете nuget вместе с файлом "MyLib.targets".

На уровне "lib" находится MyLib.dll.

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

Если я создаю проект NetCore2.0 и использую свой пакет, он работает нормально, и DLL копируютсяв выходной каталог, но все библиотеки DLL (12 из них) будут видны в VS под корнем проекта.Таким образом, мой файл Program.cs оказывается в середине ада.

Если я пытаюсь удалить их, я получаю сообщение: Невозможно изменить оцененный объект, происходящий из импортированного файла .... .targets.

Есть ли способ скрыть сторонние библиотеки, поставляемые с моим пакетом Nuget, от проекта Visual Studio?

.targets - это фрагмент кода из переполнения стека:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <NativeLibs Include="$(MSBuildThisFileDirectory)**\*.*" Exclude="$(MSBuildThisFileDirectory)**\*.targets" />
    <None Include="@(NativeLibs)">
      <Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>

1 Ответ

0 голосов
/ 11 мая 2018

Вы можете установить метаданные Visible на false, чтобы указать VS не отображать элемент в обозревателе решений:

<None Include="…">
  …
  <Visible>false</Visible>
</None>

См. Общие элементы проекта MSBuild для документации по атрибутам метаданных.

...