<Project Sdk="Microsoft.NET.Sdk">
  <!--
    Licensed to the Apache Software Foundation(ASF) under one
    or more contributor license agreements.See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License. You may obtain a copy of the License at
    
  	  http://www.apache.org/licenses/LICENSE-2.0
    
    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied. See the License for the
    specific language governing permissions and limitations
    under the License.
  -->

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <AssemblyName>Thrift</AssemblyName>
    <PackageId>Thrift</PackageId>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
    <GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
    <GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
    <GenerateAssemblyCopyrightAttribute>false</GenerateAssemblyCopyrightAttribute>
    <GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
    <GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore" Version="[2.0,)" />
    <PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="[2.0,)" />
    <PackageReference Include="Microsoft.Extensions.Logging" Version="[2.0,)" />
    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="[2.0,)" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="[2.0,)" />
    <PackageReference Include="System.IO.Pipes" Version="[4.3,)" />
    <PackageReference Include="System.Net.Http.WinHttpHandler" Version="[4.4,)" />
    <PackageReference Include="System.Net.NameResolution" Version="[4.3,)" />
    <PackageReference Include="System.Net.Requests" Version="[4.3,)" />
    <PackageReference Include="System.Net.Security" Version="[4.3,)" />
  </ItemGroup>

</Project>
