Как добавить несколько строк в файл csproj проекта после установки nuget - PullRequest
0 голосов
/ 18 июня 2020

Я создал библиотеку, которая будет преобразована в nuget, который будет запускаться на целевых сборках. Назовем его NugLib .

Цель:

Я хочу добавить 2,3 строки к целевой сборке после того, как она установила NugLib. NugLib (библиотека) имеет файл .targets, который копирует некоторые файлы в целевую сборку.

Я хочу иметь возможность добавить несколько строк в проект (файл .csproj) Не уверен, можно ли это сделать через .targets .props .nuspe c или csproj библиотеки во время / после автоматической установки nuget.

Хотите добавить эти 3 строки в целевую сборку (потребитель nuget):

  <Content Include=".pack\*.*;.pack\**;.pack\**\*" />
  <Import Project="build\build.targets" />
  <Import Project=".pack\package.csproj" Condition="Exists('.pack\package.csproj')" />

1 Ответ

1 голос
/ 19 июня 2020

Как добавить несколько строк в файл csproj проекта после установки nuget

Поскольку вы используете net стандартную библиотеку классов 2.1, вы можете использовать более простой способ.

Вы можете выполнить следующие шаги:

1) создать такую ​​структуру проекта:

enter image description here

Примечание : вы не можете использовать import="xxxx.csproj", это незаконно, и один основной файл csproj не может импортировать другой файл csproj того же уровня. Вместо этого вы должны использовать package.targets вместо packages.csproj.

2) вы должны создать файл с именем <package_id>.targets в папке сборки, чтобы он мог импортировать такой узел в вашем основном project.csproj при установке такого пакета nuget.

В NugLib.targets файле:

<Project>
  <Import Project="..\contentFiles\any\any\build\build.targets" />
  <Import Project="..\contentFiles\any\any\package.targets" Condition="Exists('..\contentFiles\any\any\package.targets')" /> 
</Project>

3) загрузите проект NugLib, а затем добавьте их в NugLib.csproj файл:

  <ItemGroup>  
     <Content Update=".pack\**" Pack="true" IncludeInPackage="true" PackagePath="content\any\any\;contentFiles\any\any\;;">
    </Content>
    <Content Update="build\build.targets" Pack="true" IncludeInPackage="true" PackagePath="content\any\any\;contentFiles\any\any\;;">    
    </Content>
    <None Update="build\NugLib.targets" Pack="true"  PackagePath="build\NugLib.targets" />
  </ItemGroup>

4) Щелкните правой кнопкой мыши свой проект и выберите Pack , тогда новый пакет nuget NugLib будет существовать под bin\Debug\xxx.nupkg .

Помимо , если вы хотите переименовать пакет, вы можете обратиться к этому документу .

Эти файлы будут автоматически добавлены в ваш основной проект. В каркасном проекте net, например:

enter image description here

В основном проекте net он находится под obj\ConsoleApp1.csproj.nuget.g.targets

enter image description here

Чтобы добавить идентификатор / заголовок проекта, вы можете установить эти свойства напрямую в файле NugLib.csproj:

<PropertyGroup>
  <PackageId>AppLogger</PackageId>
  <Version>1.0.0</Version>
  <Authors>your_name</Authors>
  <Company>your_company</Company>
</PropertyGroup>
...