安装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>
我创建了一个库,它将变成一个 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>