将道具文件 properties/variables 添加到 csproj 提示路径

Add props file properties/variables to csproj hint path

我添加了 .props 文件并将其包含在 .nuspec 文件中。 在我的 .props 文件中,我在 PropertyGroup 中添加了新的 properties/elements。 安装我的 nuget 包后,.props 文件在 .csproj 文件中成功导入。但是我如何在 HintPath 中 include/add props 文件 properties/variables(不是手动)。

为您的 nugets 使用 HintPath 和 .nuspec 是传统方法的一个指标,请考虑 PackageReference & SDK style csproj 相反,根本没有提示路径,它们都是自动的。

提示路径的遗产

提示路径通常用作 nuget 安装程序集的引用项的项元数据。遗留项目格式是在 nuget 是外部工具时开发的(现在它是 .Net SDK 的一部分)。当时的方法是让packages.config(你不再需要它)将nuget列表安装到项目中,并且在安装包时它必须出现.net 工具的其余部分作为一组常规的旁加载程序集,这就是为什么 DLL 文件已恢复到“packages”文件夹(这不再发生),并且添加了参考项使用具有此“包”文件夹的相对路径的 HintPath 到项目。这包括整个引用图,因此如果 PackageA 使用 PackageB,则两者都会部署到“packages”文件夹,并且都会在每个包的所有库上生成引用项。通过这种方式,遗留工具用于将包管理引入现有生态系统。对于新的 PacakgeReference 方法,您只需指定顶级包,所有瞬态引用将在恢复和构建时自动处理。

自定义目标

既然你提到你的 nuspec 中有 props 文件,让我澄清一下现在如何以 SDK 样式 csproj 在你发布的包中实现它(有没有 nuspec,所有 nuspec 数据现在都在 csproj 中):

  <ItemGroup>
    <None Include="your_custom.props_or_targets">
      <Pack>true</Pack>
      <PackagePath>build</PackagePath>
    </None>
  </ItemGroup>

因此,目标路径在 PackagePath 项目元数据中指定,它应该是 build 以表示这是可自动安装的目标。

现在,在传统方法中,当像这样安装包时,消费者项目会自动具有“导入”节点以明确地将此目标引入项目。现在在新的 SDK 方法中,如果你像这样使用 PackageReference 导入包,你将找不到导入节点 - 它实际上是隐式假设的,所以如果有问题的包在构建文件夹中有目标和道具 - 所有这些都将自动导入到一个构建时间(不在设计时间)。

包装参考

<ItemGroup>
    <PackageReference Include="YourPackage" Version="3.6.0" />
</ItemGroup>

因此,如果您使用这样的项目,这足以使用您在这个包中使用自定义道具带来的属性。像往常一样随意使用它们,希望您根本不再需要 HintPath。