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

时间:2020-06-18 17:57:16

标签: visual-studio msbuild nuget csproj

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

目标:

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

我希望能够在项目(.csproj文件)中添加一些行。不确定是否可以在自动安装nuget期间/之后通过.targets .props .nuspec或lib的csproj完成。

想将这3行添加到目标程序集(nuget使用者):

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

1 个答案:

答案 0 :(得分:1)

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

由于使用的是网络标准2.1类库,因此可以使用更简单的方法。

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

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

enter image description here

注意:您不能使用import="xxxx.csproj",它是非法的,并且一个主要的csproj文件不能导入另一个相同级别的csproj文件。相反,您应该更改为使用package.targets而不是packages.csproj

2),您应该在构建文件夹中创建一个名为<package_id>.targets的文件,以便在安装此类nuget软件包时可以将其导入到主project.csproj中。 / p>

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 ,然后新的NugLib nuget软件包将存在于bin\Debug\xxx.nupkg下。

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

这些文件将自动添加到您的主项目中。在网络框架项目中,如下所示:

enter image description here

在网络核心项目中,它位于obj\ConsoleApp1.csproj.nuget.g.targets

enter image description here

要添加项目的ID /标题,可以直接在NugLib.csproj文件中设置以下属性:

<PropertyGroup>
  <PackageId>AppLogger</PackageId>
  <Version>1.0.0</Version>
  <Authors>your_name</Authors>
  <Company>your_company</Company>
</PropertyGroup>
相关问题