﻿<?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 Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <OutputType>Library</OutputType>
    <TargetFrameworks>net35;net40;netstandard2.0</TargetFrameworks>
    <RootNamespace>Apache.NMS</RootNamespace>
    <AssemblyName>Apache.NMS</AssemblyName>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)'=='Release'">
    <OutputPath>..\..\build\</OutputPath>
    <AppendTargetFrameworkToOutputPath>true</AppendTargetFrameworkToOutputPath>
  </PropertyGroup>

  <PropertyGroup>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <PackageId>Apache.NMS</PackageId>
    <Version>1.8.0</Version>
    <Authors>Apache ActiveMQ</Authors>
    <Company>Apache Software Foundation</Company>
    <Product>Apache NMS API</Product>
    <Description>Apache NMS (.Net Standard Messaging Library): An abstract interface to Message Oriented Middleware (MOM) providers</Description>
    <Copyright>Copyright (C) 2005-2019 Apache Software Foundation</Copyright>
    <PackageProjectUrl>https://activemq.apache.org/components/nms/</PackageProjectUrl>
    <PackageLicense>https://github.com/apache/activemq-nms-api/blob/master/LICENSE.txt</PackageLicense>
    <PackageIconUrl>https://activemq.apache.org/assets/img/activemq_logo_icon.png</PackageIconUrl>
    <RepositoryUrl>https://github.com/apache/activemq-nms-api</RepositoryUrl>
    <RepositoryType>git</RepositoryType>
    <PackageTags>apache;activemq;nms;api;net;messaging</PackageTags>
  </PropertyGroup>

  <ItemGroup Condition=" '$(TargetFramework)' == 'net35' ">
    <Reference Include="System.Transactions" />
    <Reference Include="System.Web" />
  </ItemGroup>

  <ItemGroup Condition=" '$(TargetFramework)' == 'net40' ">
    <Reference Include="System.Transactions" />
    <Reference Include="System.Web" />
  </ItemGroup>

  <PropertyGroup>
    <SignAssembly>true</SignAssembly>
    <AssemblyOriginatorKeyFile>..\..\keyfile\NMSKey.snk</AssemblyOriginatorKeyFile>
  </PropertyGroup>
</Project>
