<Project Sdk="MSBuild.Sdk.Extras"> <PropertyGroup> <AssemblyName>protobuf-net</AssemblyName> <Title>protobuf-net</Title> <Description>Provides simple access to fast and efficient "Protocol Buffers" serialization from .NET applications</Description> <TargetFrameworks>net20;net35;net452;netstandard2.0;netcoreapp3.1</TargetFrameworks> <AllowUnsafeBlocks>true</AllowUnsafeBlocks> <DefineConstants>EMIT_ASSEMBLY_INFO</DefineConstants> <!-- new build tools spit these out --> <GeneratePackageOnBuild>True</GeneratePackageOnBuild> <!-- this is how we will configure the builds relatively cleanly --> <ImportLibs>net</ImportLibs> <FeatureCompiler>true</FeatureCompiler> <FeatureServiceModel>true</FeatureServiceModel> <FeatureServiceModelConfiguration>true</FeatureServiceModelConfiguration> <PlatformXmlSerializer>true</PlatformXmlSerializer> <PlatformBinaryFormatter>true</PlatformBinaryFormatter> <Configurations>Debug;Release;VS</Configurations> </PropertyGroup> <!-- define configuration per-platform --> <PropertyGroup Condition="'$(TargetFramework)' == 'net20'"> <FeatureServiceModel>false</FeatureServiceModel> </PropertyGroup> <PropertyGroup Condition="'$(TargetFramework)' == 'uap10.0'"> <FeatureServiceModel>false</FeatureServiceModel> <FeatureServiceModelConfiguration>false</FeatureServiceModelConfiguration> <FeatureCompiler>false</FeatureCompiler> <PlatformBinaryFormatter>false</PlatformBinaryFormatter> <DefineConstants>$(DefineConstants);COREFX;UAP</DefineConstants> </PropertyGroup> <PropertyGroup Condition="'$(TargetFramework)' == 'netstandard2.0'"> <DefineConstants>$(DefineConstants);COREFX</DefineConstants> <ImportLibs>standard</ImportLibs> <FeatureServiceModel>true</FeatureServiceModel> <FeatureServiceModelConfiguration>false</FeatureServiceModelConfiguration> </PropertyGroup> <PropertyGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'"> <DefineConstants>$(DefineConstants);COREFX</DefineConstants> <ImportLibs>none</ImportLibs> <FeatureServiceModel>true</FeatureServiceModel> <FeatureServiceModelConfiguration>false</FeatureServiceModelConfiguration> </PropertyGroup> <!-- apply the configuration options (typical via defines that switch code flows) --> <PropertyGroup Condition="'$(FeatureCompiler)' == 'true'"> <DefineConstants>$(DefineConstants);FEAT_COMPILER</DefineConstants> </PropertyGroup> <PropertyGroup Condition="'$(FeatureServiceModel)' == 'true'"> <DefineConstants>$(DefineConstants);FEAT_SERVICEMODEL</DefineConstants> </PropertyGroup> <PropertyGroup Condition="'$(FeatureServiceModelConfiguration)' == 'true'"> <DefineConstants>$(DefineConstants);FEAT_SERVICECONFIGMODEL</DefineConstants> </PropertyGroup> <PropertyGroup Condition="'$(PlatformXmlSerializer)' == 'true'"> <DefineConstants>$(DefineConstants);PLAT_XMLSERIALIZER</DefineConstants> </PropertyGroup> <PropertyGroup Condition="'$(PlatformBinaryFormatter)' == 'true'"> <DefineConstants>$(DefineConstants);PLAT_BINARYFORMATTER</DefineConstants> </PropertyGroup> <ItemGroup Condition="'$(ImportLibs)|$(FeatureServiceModel)' == 'net|true'"> <Reference Include="System.ServiceModel" /> <Reference Include="System.Configuration" /> <Reference Include="System.Runtime.Serialization" /> </ItemGroup> <ItemGroup Condition="'$(ImportLibs)' == 'standard' and '$(FeatureCompiler)' == 'true'"> <PackageReference Include="System.Reflection.Emit" Version="4.3.0" /> <PackageReference Include="System.Reflection.Emit.Lightweight" Version="4.3.0" /> </ItemGroup> <ItemGroup Condition="'$(ImportLibs)' == 'none' and '$(FeatureServiceModel)' == 'true'"> <PackageReference Include="System.ServiceModel.Primitives" Version="4.5.3" /> </ItemGroup> <ItemGroup Condition="'$(ImportLibs)' == 'standard' and '$(FeatureServiceModel)' == 'true'"> <PackageReference Include="System.ServiceModel.Primitives" Version="4.5.3" /> </ItemGroup> <ItemGroup Condition="'$(ImportLibs)' == 'standard'"> <PackageReference Include="System.Reflection.TypeExtensions" Version="4.4.0" /> <PackageReference Include="System.Xml.XmlSerializer" Version="4.3.0" /> </ItemGroup> <ItemGroup> <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.2"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference> </ItemGroup> </Project>