<Project>
<!--
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.
-->
  <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
  <Import Project="build.Common.props" />

  <!-- Allow for C# 7.2 language constructs -->
  <PropertyGroup>
    <LangVersion>7.2</LangVersion>
  </PropertyGroup>

  <PropertyGroup>
    <AvroVersion>0.1.0</AvroVersion>
    <MicrosoftDataLakeStoreVersion>1.1.3</MicrosoftDataLakeStoreVersion>
    <NewtonsoftJsonVersion>10.0.3</NewtonsoftJsonVersion>
    <ProtobufVersion>2.1.0</ProtobufVersion>
    <SystemReactiveVersion>3.1.1</SystemReactiveVersion>
    <StyleCopVersion>5.0.0</StyleCopVersion>
    <TransientFaultHandlingVersion>1.0.0</TransientFaultHandlingVersion>
    <NSubstituteVersion>3.1.0</NSubstituteVersion>
    <WindowsAzureStorageVersion>8.1.3</WindowsAzureStorageVersion>
  </PropertyGroup>
</Project>
