我创建了一个库,该库将变成可在目标程序集上运行的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')" />
答案 0 :(得分:1)
安装后如何在项目的csproj文件中添加一些行 努吉特
由于使用的是网络标准2.1类库,因此可以使用更简单的方法。
您可以按照以下步骤操作:
1):创建这样的项目结构:
注意:您不能使用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。
这些文件将自动添加到您的主项目中。在网络框架项目中,如下所示:
在网络核心项目中,它位于obj\ConsoleApp1.csproj.nuget.g.targets
下
要添加项目的ID /标题,可以直接在NugLib.csproj
文件中设置以下属性:
<PropertyGroup>
<PackageId>AppLogger</PackageId>
<Version>1.0.0</Version>
<Authors>your_name</Authors>
<Company>your_company</Company>
</PropertyGroup>