C# Установить свойство Копировать в выходной каталог всегда из Nuget для проектов PackageReference - PullRequest
0 голосов
/ 11 июля 2020

У меня есть библиотека многоцелевого фреймворка, которая содержит набор файлов xsd. Я хочу упаковать эту библиотеку как nuget и добавить эти xsds в nuget. Для этого я использую .cproj aproach, а не файл .nuspe c.

Фактическое добавление файлов не проблема, единственное, что я хочу иметь возможность установить файл свойство «копировать в выходной каталог» на «Всегда» при установке Nuget.

Я много раз использую файл install.ps1, как описано здесь в stackoverflow, и это фактически устанавливает свойство для файлов, включенных в . NET Рамочный проект. Но когда вы добавляете nuget в проект. NET Core или. NET Standard, он ничего не делает с файлами. Я думаю, это потому, что. NET Framework использует подход package.config, в то время как het. NET Core и. NET Standard с использованием PackageReference.

мой файл .csproj выглядит так:

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

  <PropertyGroup>
    <TargetFrameworks>netstandard2.0;netcoreapp2.1;net45</TargetFrameworks>
    <Version>1.0.11</Version>
  </PropertyGroup>

  <ItemGroup>
    <None Update="XSD\V202001\Voorbeeld\Common.xsd" Pack="true">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
    <None Update="XSD\V202001\Voorbeeld\Specific.xsd">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>

  <ItemGroup>
    <Content Include="XSD/**/*.*" copyToOutput="true">
      <IncludeInPackage>true</IncludeInPackage>
      <CopyToOutput>true</CopyToOutput>
      <BuildAction>none</BuildAction>
      <copyToOutput>true</copyToOutput>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
  
  <ItemGroup>
    <Content Include="tools\install.ps1">
      <PackagePath>tools\</PackagePath>
    </Content>
  </ItemGroup>
</Project>

Как выглядит nuget из проводника пакетов:

Как выглядит nuget из проводника пакетов

Может кто-нибудь сказать мне, как установить свойство всегда для всех фреймворков?

1 Ответ

0 голосов
/ 20 июля 2020

Решением этого является установка дополнительного свойства, которое активирует copyToOutput

, изменяя это:

<ItemGroup>
    <Content Include="XSD/**/*.*" copyToOutput="true">
        <IncludeInPackage>true</IncludeInPackage>
        <CopyToOutput>true</CopyToOutput>
        <BuildAction>none</BuildAction>
        <copyToOutput>true</copyToOutput>
        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
</ItemGroup>

на

<ItemGroup>
    <Content Include="XSD/**/*.*" copyToOutput="true">
        <BuildAction>none</BuildAction>
        <PackageCopyToOutput>true</PackageCopyToOutput>
    </Content>
</ItemGroup>

решает мою проблему.

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