安装nuget后如何在项目的csproj文件中添加一些行

How to add some lines to the project's csproj file after installing a nuget

我创建了一个库,它将变成一个 nuget,它将 运行 在目标程序集上。 我们称它为 NugLib.

目标:

我想要的是在安装NugLib 后向目标程序集添加2,3 行。 NugLib(库)有一个 .targets 文件,它将一些文件复制到目标程序集中。

我希望能够向项目(.csproj 文件)添加一些行不确定是否可以通过 .targets .props .nuspec 或库的 csproj during/after 安装 nuget自动。

想要将这 3 行添加到目标程序集(nuget 消费者):

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

How to add some lines to the project's csproj file after installing a nuget

由于您使用的是 net standard 2.1 class 库,因此您可以使用更简单的方法。

您可以按照以下步骤操作:

1) 创建这样的项目结构:

注意:不能使用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)右击你的项目,selectPack,那么新的NugLib nuget包就会存在于bin\Debug\xxx.nupkg.

此外,如果要重命名包,可以参考this document.

这些文件将自动添加到您的主项目中。在net framework项目中,像这样:

net core项目中,在obj\ConsoleApp1.csproj.nuget.g.targets

要添加项目的 ID/Title,您可以直接在 NugLib.csproj 文件中设置这些属性:

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