.net core 在NuGet包中定义C#预处理器符号

.net core 在NuGet包中定义C#预处理器符号,.net-core,msbuild,nuget,preprocessor,.net Core,Msbuild,Nuget,Preprocessor,NuGet包能否为消费项目定义预处理器符号?如果是,如何处理?如果您的包(My.ExamplePackage)在生成目录(sobuild\MyExamplePackage.targets)中包含一个类似包名+.targets的MSBuild文件,您可以使用它修改项目中可能已设置为默认值或重置的DefineConstants属性: <Project> <PropertyGroup> <DefineConstants>$(DefineConstants

NuGet包能否为消费项目定义预处理器符号?如果是,如何处理?

如果您的包(
My.ExamplePackage
)在生成目录(so
build\MyExamplePackage.targets
)中包含一个类似包名+
.targets
的MSBuild文件,您可以使用它修改项目中可能已设置为默认值或重置的
DefineConstants
属性:

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

美元(定义常量);我的前置处理器符号
虽然包可以同时包含
.props
.targets
文件,但是
.targets
文件将在构建csproj文件的主体之后导入,因此如果项目重新设置
.DefineConstants
(意思是不通过在
$(DefineConstant);
)的话,
.targets
文件有可能添加到此属性