https://issues.apache.org/jira/browse/AMQNET-454

https://issues.apache.org/jira/secure/attachment/12659250/Apache.NMS.AMQP-25-use-qpid-0.28.patch
diff --git a/nant-common.xml b/nant-common.xml
index be40af6..af0d997 100644
--- a/nant-common.xml
+++ b/nant-common.xml
@@ -43,13 +43,13 @@
     <property name="download.skip"           value="false" unless="${property::exists('download.skip')}"/>
     <property name="install.skip"            value="false" unless="${property::exists('install.skip')}"/>
     <property name="compile.skip"            value="false" unless="${property::exists('compile.skip')}" />
-    <property name="current.build.config"    value="${if(project.release.type == 'release', 'release', 'debug')}" overwrite="false" />
+    <property name="current.build.config"    value="${if(project.release.type == 'SNAPSHOT', 'debug', 'release')}" overwrite="false" />
     <property name="current.build.framework" value="${framework::get-target-framework()}" overwrite="false" />
     <property name="current.build.defines"   value="${build.defines}" />
     <property name="build.framework.strings" value="net-2.0,net-3.5,net-4.0,mono-2.0,mono-4.0,netcf-2.0,netcf-3.5" unless="${property::exists('build.framework.strings')}"/>
     <property name="current.build.framework.assembly.dir" value="${framework::get-assembly-directory(framework::get-target-framework())}" dynamic="true" />
 
-    <property name="build.config.strings"    value="${if(property::exists('configuration'), configuration, if(build.skip.release == 'true', 'debug', 'debug,release'))}" dynamic="true" />
+    <property name="build.config.strings"    value="debug,release" unless="${property::exists('build.config.strings')}" />
 
     <!-- Figure out the user's HOME directory -->
     <property name="user.home" value="${environment::get-variable('HOME')}"
@@ -384,6 +384,7 @@
                 <copy todir="${build.bin.dir}" file="${content.filename}" if="${not file::up-to-date(content.filename, '${build.bin.dir}/${content.filename}')}" />
             </do>
         </foreach>
+        <call target="copy-unmanaged-content" /> 
     </target>
 
     <!-- ============================================================================================ -->
diff --git a/nant.build b/nant.build
index cf7076f..31a3ab8 100644
--- a/nant.build
+++ b/nant.build
@@ -48,12 +48,13 @@
     <property name="Apache.Qpid.dll"           value="${basedir}/lib/Apache.Qpid/${current.build.framework}/org.apache.qpid.messaging.dll" dynamic="true" />

     <property name="NUnit.Projectfile"         value="Apache.NMS.AMQP.Test.nunit" />

 

-    <!-- Skip certain frameworks, since Apache Qpid is not supported on those platforms. -->

-    <property name="build.netcf-2.0.skip" value="true" />

-    <property name="build.netcf-3.5.skip" value="true" />

-    <property name="build.mono-2.0.skip" value="true" />

-    <property name="build.net-3.5.skip" value="true" />

+    <!-- Skip certain frameworks, since Apache Qpid is not supported on those platforms.

+         net-2.0 built by Visual Studio 2008, net4.0 built by Visual Studio 2010

+         to align .NET build with underlying unmanaged C runtime. -->

     <property name="build.framework.strings" value="net-2.0,net-4.0"/>

+    

+    <!-- Limit to debug until lib\Apache.Qpid\net-X.0 gets debug/release subdirectories -->

+    <property name="build.config.strings"    value="debug" />

 

     <target name="vendor-init" description="Initializes Vendor library from local repository.">

         <!--

@@ -78,11 +79,12 @@
         <!-- Property grouping for 'vendor.qpid.apache.org' -->

         <property name="vendor.qpid.apache.org.name"      value="Apache.Qpid" />

         <property name="vendor.qpid.apache.org.group"     value="org.apache.qpid" />

-        <property name="vendor.qpid.apache.org.version"   value="0.27.0.16097" />

+        <property name="vendor.qpid.apache.org.version"   value="0.28.0.16239" />

+        <!-- net-4.0 built with VS2010 (vc100), net-2.0 built with VS2008 (vc90) -->

 		<property name="vcver"                            value="${if(current.build.framework == 'net-4.0', 'vc100', 'vc90')}" />

-		<property name="debugsuffix"                      value="${if(project.release.type == 'release', '', 'd')}" />

-		<property name="boostdebug"                       value="${if(project.release.type == 'release', '', '-gd')}" />

-		<echo message="Vendor-init current.build.framework = ${current.build.framework}, project.release.type = ${project.release.type}" />

+		<property name="debugsuffix"                      value="${if(current.build.config == 'release', '', 'd')}" />

+		<property name="boostdebug"                       value="${if(current.build.config == 'release', '', '-gd')}" />

+		<echo message="Vendor-init current.build.framework = ${current.build.framework}, current.build.config = ${current.build.config}" />

 		<echo message="vcver = ${vcver}, debugsuffix = ${debugsuffix}, boostdebug = ${boostdebug}" />

 		 

         <property name="vendor.qpid.apache.org.filenames" value="org.apache.qpid.messaging.dll,${boost_chrono},${boost_date_time},${boost_program_options},${boost_system},${boost_thread},${qpidclient},${qpidcommon},${qpidmessaging},${qpid-proton},${qpidtypes}" dynamic="true"/>

@@ -130,6 +132,19 @@
 

     </target>

 

+    <target name="copy-unmanaged-content" description="Copies native DLLs from \lib to \build">

+        <foreach item="File" property="filename">

+            <in> <items>

+                <include name="${basedir}/lib/Apache.Qpid/${current.build.framework}/qpid*" />

+                <include name="${basedir}/lib/Apache.Qpid/${current.build.framework}/boost*" />

+            </items> </in>

+            <do>

+                <echo message="Copying unmanaged: ${filename}" />

+                <copy todir="${build.bin.dir}" file="${filename}" if="${not file::up-to-date(filename, '${build.bin.dir}/${filename}')}" />

+            </do>

+        </foreach>

+    </target>

+    

     <target name="default" depends="install-all" />

 

     <zipfileset id="src.package.contents" basedir="${basedir}">

diff --git a/src/test/csharp/NMSConnectionFactoryTest.cs b/src/test/csharp/NMSConnectionFactoryTest.cs
index 5f58f1d..efb55a5 100644
--- a/src/test/csharp/NMSConnectionFactoryTest.cs
+++ b/src/test/csharp/NMSConnectionFactoryTest.cs
@@ -47,10 +47,9 @@
         //[TestCase("amqp:tcp:host-._~%ff%23:42")]
 
         // These test cases fail to parse the URI
-        // TODO: The SEHException is fixed in  upstream qpid but not yet in vendor kit.
-        [TestCase("amqp:tcp:",  ExpectedException = typeof(System.Runtime.InteropServices.SEHException))]
-        [TestCase("amqp:",      ExpectedException = typeof(System.Runtime.InteropServices.SEHException))]
-        [TestCase("amqp::5672", ExpectedException = typeof(System.Runtime.InteropServices.SEHException))]
+        [TestCase("amqp:tcp:", ExpectedException = typeof(ConnectionClosedException))]
+        [TestCase("amqp:", ExpectedException = typeof(ConnectionClosedException))]
+        [TestCase("amqp::5672", ExpectedException = typeof(ConnectionClosedException))]
 
         // These test cases pass parsing the URI but fail to connect
         [TestCase("amqp:tcp:localhost:42",               ExpectedException = typeof(ConnectionClosedException))]
diff --git a/vs2008-HelloWorld.csproj b/vs2008-HelloWorld.csproj
index 5536eaa..26bd5bf 100644
--- a/vs2008-HelloWorld.csproj
+++ b/vs2008-HelloWorld.csproj
@@ -2,7 +2,7 @@
   <PropertyGroup>

     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>

     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>

-    <ProductVersion>9.0.30729</ProductVersion>

+    <ProductVersion>9.0.21022</ProductVersion>

     <SchemaVersion>2.0</SchemaVersion>

     <ProjectGuid>{DC7079D8-D4A1-41FB-9997-78914CFAACB0}</ProjectGuid>

     <OutputType>Exe</OutputType>

@@ -61,6 +61,23 @@
     <DebugType>full</DebugType>

     <NoWarn>3016</NoWarn>

   </PropertyGroup>

+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">

+    <DebugSymbols>true</DebugSymbols>

+    <OutputPath>build\net-2.0\debug\</OutputPath>

+    <DefineConstants>TRACE;DEBUG;NET,NET_2_0</DefineConstants>

+    <NoWarn>3016</NoWarn>

+    <DebugType>full</DebugType>

+    <PlatformTarget>x86</PlatformTarget>

+  </PropertyGroup>

+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">

+    <DebugSymbols>true</DebugSymbols>

+    <OutputPath>bin\x86\Release\</OutputPath>

+    <DefineConstants>TRACE;NET,NET_2_0</DefineConstants>

+    <Optimize>true</Optimize>

+    <NoWarn>3016</NoWarn>

+    <DebugType>full</DebugType>

+    <PlatformTarget>x86</PlatformTarget>

+  </PropertyGroup>

   <ItemGroup>

     <Reference Include="Apache.NMS, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL">

       <SpecificVersion>False</SpecificVersion>

diff --git a/vs2008-amqp.csproj b/vs2008-amqp.csproj
index 85e9056..53cd911 100644
--- a/vs2008-amqp.csproj
+++ b/vs2008-amqp.csproj
@@ -2,7 +2,7 @@
   <PropertyGroup>

     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>

     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>

-    <ProductVersion>9.0.30729</ProductVersion>

+    <ProductVersion>9.0.21022</ProductVersion>

     <SchemaVersion>2.0</SchemaVersion>

     <ProjectGuid>{5CDFDA77-CFC2-4A6E-B731-6C06B59BFFE3}</ProjectGuid>

     <OutputType>Library</OutputType>

@@ -64,7 +64,7 @@
       <SpecificVersion>False</SpecificVersion>

       <HintPath>lib\Apache.NMS\net-2.0\Apache.NMS.dll</HintPath>

     </Reference>

-    <Reference Include="org.apache.qpid.messaging, Version=0.27.0.16097, Culture=neutral, PublicKeyToken=7e57166074abee8c, processorArchitecture=x86" />

+    <Reference Include="org.apache.qpid.messaging, Version=0.28.0.16239, Culture=neutral, PublicKeyToken=7e57166074abee8c, processorArchitecture=x86" />

     <Reference Include="System" />

     <Reference Include="System.Data" />

     <Reference Include="System.Xml" />

diff --git a/vs2008-amqp.sln b/vs2008-amqp.sln
index 61287b0..b18af6c 100644
--- a/vs2008-amqp.sln
+++ b/vs2008-amqp.sln
@@ -10,21 +10,31 @@
 Global

 	GlobalSection(SolutionConfigurationPlatforms) = preSolution

 		Debug|Any CPU = Debug|Any CPU

+		Debug|x86 = Debug|x86

 		Release|Any CPU = Release|Any CPU

+		Release|x86 = Release|x86

 	EndGlobalSection

 	GlobalSection(ProjectConfigurationPlatforms) = postSolution

 		{5CDFDA77-CFC2-4A6E-B731-6C06B59BFFE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU

 		{5CDFDA77-CFC2-4A6E-B731-6C06B59BFFE3}.Debug|Any CPU.Build.0 = Debug|Any CPU

+		{5CDFDA77-CFC2-4A6E-B731-6C06B59BFFE3}.Debug|x86.ActiveCfg = Debug|Any CPU

 		{5CDFDA77-CFC2-4A6E-B731-6C06B59BFFE3}.Release|Any CPU.ActiveCfg = Release|Any CPU

 		{5CDFDA77-CFC2-4A6E-B731-6C06B59BFFE3}.Release|Any CPU.Build.0 = Release|Any CPU

+		{5CDFDA77-CFC2-4A6E-B731-6C06B59BFFE3}.Release|x86.ActiveCfg = Release|Any CPU

 		{2F31ED5C-44A2-464A-BD55-2B5B010654E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU

 		{2F31ED5C-44A2-464A-BD55-2B5B010654E8}.Debug|Any CPU.Build.0 = Debug|Any CPU

+		{2F31ED5C-44A2-464A-BD55-2B5B010654E8}.Debug|x86.ActiveCfg = Debug|Any CPU

 		{2F31ED5C-44A2-464A-BD55-2B5B010654E8}.Release|Any CPU.ActiveCfg = Release|Any CPU

 		{2F31ED5C-44A2-464A-BD55-2B5B010654E8}.Release|Any CPU.Build.0 = Release|Any CPU

+		{2F31ED5C-44A2-464A-BD55-2B5B010654E8}.Release|x86.ActiveCfg = Release|Any CPU

 		{DC7079D8-D4A1-41FB-9997-78914CFAACB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU

 		{DC7079D8-D4A1-41FB-9997-78914CFAACB0}.Debug|Any CPU.Build.0 = Debug|Any CPU

+		{DC7079D8-D4A1-41FB-9997-78914CFAACB0}.Debug|x86.ActiveCfg = Debug|x86

+		{DC7079D8-D4A1-41FB-9997-78914CFAACB0}.Debug|x86.Build.0 = Debug|x86

 		{DC7079D8-D4A1-41FB-9997-78914CFAACB0}.Release|Any CPU.ActiveCfg = Release|Any CPU

 		{DC7079D8-D4A1-41FB-9997-78914CFAACB0}.Release|Any CPU.Build.0 = Release|Any CPU

+		{DC7079D8-D4A1-41FB-9997-78914CFAACB0}.Release|x86.ActiveCfg = Release|x86

+		{DC7079D8-D4A1-41FB-9997-78914CFAACB0}.Release|x86.Build.0 = Release|x86

 	EndGlobalSection

 	GlobalSection(SolutionProperties) = preSolution

 		HideSolutionNode = FALSE

diff --git a/vs2010-amqp-test.csproj b/vs2010-amqp-test.csproj
index 716c452..270dd2d 100644
--- a/vs2010-amqp-test.csproj
+++ b/vs2010-amqp-test.csproj
@@ -68,8 +68,8 @@
     <DebugSymbols>true</DebugSymbols>

     <DebugType>full</DebugType>

     <Optimize>false</Optimize>

-    <OutputPath>build\net-2.0\debug\</OutputPath>

-    <DefineConstants>TRACE;DEBUG;NET,NET_2_0</DefineConstants>

+    <OutputPath>build\net-4.0\debug\</OutputPath>

+    <DefineConstants>TRACE;DEBUG;NET,NET_4_0</DefineConstants>

     <AllowUnsafeBlocks>false</AllowUnsafeBlocks>

     <NoWarn>3016</NoWarn>

   </PropertyGroup>

@@ -100,13 +100,13 @@
     <Reference Include="System.Xml" />

   </ItemGroup>

   <ItemGroup>

-    <Compile Include="src\MapMessageTest.cs" />

-    <Compile Include="src\MessageDeliveryTest.cs" />

-    <Compile Include="src\MessageTest.cs" />

-    <Compile Include="src\NMSConnectionFactoryTest.cs" />

-    <Compile Include="src\NmsConsoleTracer.cs" />

+    <Compile Include="src\test\csharp\MapMessageTest.cs" />

+    <Compile Include="src\test\csharp\MessageDeliveryTest.cs" />

+    <Compile Include="src\test\csharp\MessageTest.cs" />

+    <Compile Include="src\test\csharp\NMSConnectionFactoryTest.cs" />

+    <Compile Include="src\test\csharp\NmsConsoleTracer.cs" />

     <Compile Include="src\test\csharp\CommonAssemblyInfo.cs" />

-    <Compile Include="src\TextMessageTest.cs" />

+    <Compile Include="src\test\csharp\TextMessageTest.cs" />

   </ItemGroup>

   <ItemGroup>

     <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">