Невозможно скопировать папку с пакетом nuget в ядро ​​.net - PullRequest
0 голосов
/ 24 декабря 2018

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

<?xml version="1.0"?>
<package>
 <metadata minClientVersion="3.3.0">
    <id>MyPackage</id>
    <version>1.0.0</version>
    <authors>Meysam</authors>
    <owners>Meysam</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Package description</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>Copyright 2018</copyright>
    <tags>Tag1 Tag2</tags>

    <contentFiles>
      <files include="cs/*.*/**" buildAction="Compile" />
    </contentFiles>

  </metadata>

  <files>
    <file src="ConsoleApp1\CustomClass\CustomClass.cs" target="contentFiles\cs\any\CustomClass" />
  </files>

</package>

enter image description here

enter image description here

Ответы [ 2 ]

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

Невозможно скопировать папку с пакетом nuget в ядре .net

Да, точно так же, как сказал zivkan:

Копирование файлов в проект, использующий nugetПакет поддерживается только при использовании packages.config

Но мы можем использовать обходной путь для решения этой проблемы.Мы могли бы добавить задачу копирования в файл xx.targets и установить этот файл в папке \ build в файле .nuspec.

Содержимое файла mypackage.targets:

<Target Name="CopyFile" AfterTargets="AfterBuild">
  <ItemGroup>
    <CopyFiles Include="$(NuGetPackageRoot)\mypackage\4.0.0\cs\*.*\**" />
  </ItemGroup>

   <Copy  
      SourceFiles="@(CopyFiles)"  
      DestinationFolder="$(ProjectDir)"  
   /> 
</Target>

И файл .nuspec:

 <file src="xxx\xxx\mypackage.targets" target="build" />

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

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

Копирование файлов в проект, использующий пакет nuget, поддерживается только при использовании packages.config, который не поддерживается проектами в стиле SDK, которые требуются для проектов .NET Core.Как показывают ваши скриншоты, contentFiles в проектах PackageReferences включены во время сборки.Маленький значок стрелки в правом нижнем углу C # и значки папок, на которые вы указали на скриншоте, являются визуальными индикаторами того, что файл и папка отличаются от других файлов и папок в вашем проекте.Фактически, это небольшое наложение значков похоже на то, что Windows добавляет для ярлыков, поэтому, если вы понимаете, что ярлык - это файл, который «указывает» на другой файл, следует иметь в виду, что это ярлыки для файлов вне вашего проекта, но они включеныкак часть вашего проекта.

В любом случае, он работает как задумано.

Вам нужно будет найти другой способ сделать что угодно, но вы не описали, почему пытаетесьвключить в проект файл, который ссылается на ваш пакет, поэтому я не могу дать прямой совет.Мой лучший совет, если у вас есть опыт работы с ASP.NET и ASP.NET Core, подумайте о том, как ASP.NET считывал множество параметров непосредственно из web.config, но вместо этого ASP.NET Core использует шаблон компоновщика, так чтопользователи не обязаны хранить настройки в web.config и могут хранить настройки где угодно.Если то, что вы делаете, похоже, пользователи вашего пакета получат больше опыта, если вы предоставите им конструктор конфигурации, который они могут переопределить, вместо того, чтобы иметь в своем проекте файл, который они должны редактировать и перезаписывать при каждом обновлении доновая версия вашего пакета.

...