﻿<?xml version="1.0" encoding="utf-8"?>
 <!--
 * 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.                                           *
 -->
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.50727</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{3D44C33C-0E5F-443B-A0B4-ABDF16B64AC5}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>Etch</RootNamespace>
    <AssemblyName>EtchTest</AssemblyName>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="nunit.framework, Version=2.4.7.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
      <HintPath>$(NUNIT_HOME)\bin\nunit.framework.dll</HintPath>
      <SpecificVersion>False</SpecificVersion>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Etch\Msg\TestComboValidator.cs" />
    <Compile Include="Etch\Msg\TestField.cs" />
    <Compile Include="Etch\Msg\TestFieldMap.cs" />
    <Compile Include="Etch\Msg\TestIdName.cs" />
    <Compile Include="Etch\Msg\TestIdNameMap.cs" />
    <Compile Include="Etch\Msg\TestMessage.cs" />
    <Compile Include="Etch\Msg\TestStructValue.cs" />
    <Compile Include="Etch\Msg\TestTypeMap.cs" />
    <Compile Include="Etch\Msg\TestXType.cs" />
    <Compile Include="Etch\Support\TestDefaultValueFactory.cs" />
    <Compile Include="Etch\Support\TestFreePool.cs" />
    <Compile Include="Etch\Support\TestRemoteBase.cs" />
    <Compile Include="Etch\Support\TestStubBase.cs" />
    <Compile Include="Etch\Support\TestTodoManager.cs" />
    <Compile Include="Etch\Support\TestTypeValidator.cs" />
    <Compile Include="Etch\Support\TestValidators.cs" />
    <Compile Include="Etch\Support\TestValidator_boolean.cs" />
    <Compile Include="Etch\Support\TestValidator_byte.cs" />
    <Compile Include="Etch\Support\TestValidator_double.cs" />
    <Compile Include="Etch\Support\TestValidator_float.cs" />
    <Compile Include="Etch\Support\TestValidator_int.cs" />
    <Compile Include="Etch\Support\TestValidator_long.cs" />
    <Compile Include="Etch\Support\TestValidator_object.cs" />
    <Compile Include="Etch\Support\TestValidator_short.cs" />
    <Compile Include="Etch\Support\TestValidator_string.cs" />
    <Compile Include="Etch\Support\TestValidator_StructValue.cs" />
    <Compile Include="Etch\Support\TestValidator_void.cs" />
    <Compile Include="Etch\Transport\Filter\TestKeepAlive.cs" />
    <Compile Include="Etch\Transport\Filter\TestLogger.cs" />
    <Compile Include="Etch\Transport\Filter\TestPwAuth.cs" />
    <Compile Include="Etch\Transport\Fmt\Binary\TestBinaryTaggedDataInOut.cs" />
    <Compile Include="Etch\Transport\TestArrayValue.cs" />
    <Compile Include="Etch\Transport\TestDefaultDeliveryService.cs" />
    <Compile Include="Etch\Transport\TestMessagizer.cs" />
    <Compile Include="Etch\Transport\TestPlainMailbox.cs" />
    <Compile Include="Etch\Transport\TestPlainMailboxManager.cs" />
    <Compile Include="Etch\Util\TestAlarmManager.cs" />
    <Compile Include="Etch\Util\TestCharIterator.cs" />
    <Compile Include="Etch\Util\TestCircularQueue.cs" />
    <Compile Include="Etch\Util\TestDateSerializer.cs" />
    <Compile Include="Etch\Util\TestFlexBuffer.cs" />
    <Compile Include="Etch\Util\TestHelp.cs" />
    <Compile Include="Etch\Util\TestHPTimer.cs" />
    <Compile Include="Etch\Util\TestMonitor.cs" />
    <Compile Include="Etch\Util\TestPacketizer.cs" />
    <Compile Include="Etch\Util\TestStringUtil.cs" />
    <Compile Include="Etch\Util\TestStrIntHashMapSerializer.cs" />
    <Compile Include="Etch\Util\TestStrStrHashMapSerializer.cs" />
    <Compile Include="Etch\Util\TestTcpConnection.cs" />
    <Compile Include="Etch\Util\TestURL.cs" />
    <Compile Include="Etch\Util\TestUrlSerializer.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\..\main\csharp\EtchProj.csproj">
      <Project>{0E518F2A-3016-4C2F-A21B-9BD52B2DC846}</Project>
      <Name>EtchProj</Name>
    </ProjectReference>
  </ItemGroup>
  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>
