﻿<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>
    <AssemblyName>Org.Apache.REEF.Wake.Tests</AssemblyName>
    <TargetFrameworks>netstandard2.0;netcoreapp2.0;net46;net451</TargetFrameworks>
  </PropertyGroup>
  <Import Project="..\build.DotNet.props" />
  <ItemGroup>
    <PackageReference Include="System.Reactive.Core" Version="$(SystemReactiveVersion)" />
    <PackageReference Include="System.Reactive.Interfaces" Version="$(SystemReactiveVersion)" />
  </ItemGroup>
  <Import Project="..\xunit.DotNet.props" />
  <ItemGroup>
    <ProjectReference Include="..\Org.Apache.REEF.Tang\Org.Apache.REEF.Tang.DotNet.csproj" />
    <ProjectReference Include="..\Org.Apache.REEF.Wake\Org.Apache.REEF.Wake.DotNet.csproj" />
  </ItemGroup>
</Project>
