首页 > 解决方案 > 在 NuGet 包中定义 C# 预处理器符号

问题描述

NuGet 包可以为消费项目定义预处理器符号吗?如果是这样,怎么办?

标签: .net-coremsbuildnugetpreprocessor

解决方案


如果您的包 ( )在构建目录 (so )My.ExamplePackage中包含名为包名 + 的 MSBuild 文件,则可以使用它来修改项目中可能已设置为默认值或重置的属性:.targetsbuild\MyExamplePackage.targetsDefineConstants

<Project>
  <PropertyGroup>
    <DefineConstants>$(DefineConstants);MY_PREPOCESSOR_SYMBOL</DefineConstants>
  </PropertyGroup>
</Project>

虽然包可以同时包含 a.props.targets文件,但.targets文件将在构建 csproj 文件的主体之后导入,因此如果项目重新设置DefineConstants(意味着不通过 prepending 添加$(DefineConstant);),.targtes文件有机会添加到这个属性。


推荐阅读