[mapguide-commits] r10118 - in branches/4.0/MgDev: Bindings/src/Bindings/DotNet/Portable Bindings/src/Managed/DotNet/OSGeo.MapGuide.PlatformBase/custom Bindings/src/SwigCommon/DotNet Portable Portable/DesktopUnmanagedApi/DotNet Portable/DotNetHarness Portable/DotNetHarness/Feature Portable/DotNetHarness/Rendering Portable/DotNetHarness/Resource Portable/DotNetHarness/Tile Portable/DotNetUnitTest Portable/MapViewerTest Portable/MgAppLayout Portable/OSGeo.MapGuide.Viewer Portable/OSGeo.MapGuide.Viewer.Portable

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Wed Feb 5 18:59:29 PST 2025


Author: jng
Date: 2025-02-05 18:59:26 -0800 (Wed, 05 Feb 2025)
New Revision: 10118

Added:
   branches/4.0/MgDev/Bindings/src/Managed/DotNet/OSGeo.MapGuide.PlatformBase/custom/MgColor.cs
   branches/4.0/MgDev/Portable/DesktopUnmanagedApi/DotNet/MgPortable.snk
   branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MgPortableMapViewerProvider.cs
   branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MgPortableTransientMapState.cs
   branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/OSGeo.MapGuide.Viewer.Portable.csproj
   branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer/OSGeo.MapGuide.Viewer.csproj
Removed:
   branches/4.0/MgDev/Portable/DesktopUnmanagedApi/DotNet/MgDesktop.snk
   branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MapViewer.Desktop.csproj
   branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MgDesktopMapViewerProvider.cs
   branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MgdTransientMapState.cs
   branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer/MapViewer.csproj
   branches/4.0/MgDev/Portable/PortableDotNet.sln
Modified:
   branches/4.0/MgDev/Bindings/src/Bindings/DotNet/Portable/PortableApiGen.xml
   branches/4.0/MgDev/Bindings/src/SwigCommon/DotNet/sugar.i
   branches/4.0/MgDev/Portable/DotNetHarness/DotNetHarness.csproj
   branches/4.0/MgDev/Portable/DotNetHarness/Feature/CreateFeatureSourceCtrl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Feature/EnumerateDataStoresControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Feature/ExecuteSqlControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Feature/ExecuteSqlNonQueryControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetCapabilitiesControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetClassesControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetFeatureProvidersControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetSchemaMappingCtrl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetSchemasControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetSpatialContextsControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Feature/RegisterProviderCtrl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Feature/SelectAggregatesControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Feature/SelectFeaturesControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Feature/TestConnectionControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Program.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Rendering/RenderDynamicOverlayControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Rendering/RenderMapControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Rendering/RenderTileControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Resource/ApplyResourcePackageControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Resource/CopyResourceControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Resource/DeleteResourceControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Resource/DeleteResourceDataControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Resource/EnumerateResourceDataControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Resource/EnumerateResourcesControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Resource/EnumerateUnmanagedDataControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Resource/GetResourceContentControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Resource/GetResourceDataControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Resource/MoveResourceControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Resource/RenameResourceDataControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Resource/ResourceExistsControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Resource/SetResourceControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Resource/SetResourceDataControl.cs
   branches/4.0/MgDev/Portable/DotNetHarness/Tile/GetTileControl.cs
   branches/4.0/MgDev/Portable/DotNetUnitTest/Assert.cs
   branches/4.0/MgDev/Portable/DotNetUnitTest/DotNetUnitTest.csproj
   branches/4.0/MgDev/Portable/DotNetUnitTest/Program.cs
   branches/4.0/MgDev/Portable/DotNetUnitTest/ResourceServiceTests.cs
   branches/4.0/MgDev/Portable/MapViewerTest/CompactViewer.Designer.cs
   branches/4.0/MgDev/Portable/MapViewerTest/CompactViewer.cs
   branches/4.0/MgDev/Portable/MapViewerTest/MapViewerTest.csproj
   branches/4.0/MgDev/Portable/MapViewerTest/MgAppWindow.cs
   branches/4.0/MgDev/Portable/MapViewerTest/Program.cs
   branches/4.0/MgDev/Portable/MapViewerTest/ResourceIdDialog.cs
   branches/4.0/MgDev/Portable/MgAppLayout/MgAppLayout.csproj
   branches/4.0/MgDev/Portable/MgAppLayout/Program.cs
   branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/Strings.Designer.cs
   branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer/MgMapViewer.cs
   branches/4.0/MgDev/Portable/Portable.sln
Log:
mg-portable updates:
 - MapViewer -> OSGeo.MapGuide.Viewer
 - MapViewer.Desktop -> OSGeo.MapGuide.Viewer.Portable
 - Migrate all .net project to SDK-style projects. For applicable projects that use WinForms, target net6.0-windows
 - Rename MgDesktop.snk to MgPortable.snk
 - Remove PortableDotNet.sln, move all of its projects into Portable.sln
 - Fix up all broken API usages in .net projects due to the "Mgd" -> "MgPortable" prefix change
 - Fix up .net API binding machinery in light of above
   - Add missing PortableApi_Properties.i inclusion to PortableApiGen.xml that caused properties to not be plumbed to relevant classes
   - Relax IReadOnlyCollection<T>.Count explicit implementation
   - Restore MgColor ctor overload that takes a System.Drawing.Color

Modified: branches/4.0/MgDev/Bindings/src/Bindings/DotNet/Portable/PortableApiGen.xml
===================================================================
--- branches/4.0/MgDev/Bindings/src/Bindings/DotNet/Portable/PortableApiGen.xml	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Bindings/src/Bindings/DotNet/Portable/PortableApiGen.xml	2025-02-06 02:59:26 UTC (rev 10118)
@@ -52,6 +52,7 @@
 -->
 <SwigInline>
   %include "PortableApi_Doc.i" //doc fragments
+  %include "PortableApi_Properties.i" //doc fragments
   %include "language.i"   //typemaps specific for each language
   // IMPORTANT: Must %import dependencies *after* %include-ing language.i, otherwise
   // SWIG runtime glue code for $LANGUAGE isn't generated

Added: branches/4.0/MgDev/Bindings/src/Managed/DotNet/OSGeo.MapGuide.PlatformBase/custom/MgColor.cs
===================================================================
--- branches/4.0/MgDev/Bindings/src/Managed/DotNet/OSGeo.MapGuide.PlatformBase/custom/MgColor.cs	                        (rev 0)
+++ branches/4.0/MgDev/Bindings/src/Managed/DotNet/OSGeo.MapGuide.PlatformBase/custom/MgColor.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -0,0 +1,13 @@
+namespace OSGeo.MapGuide
+{
+    partial class MgColor
+    {
+        /// <summary>
+        /// Constructor that accepts a <see cref="System.Drawing.Color"/>
+        /// </summary>
+        /// <param name="c"></param>
+        public MgColor(System.Drawing.Color c)
+            : this((short)c.R, (short)c.G, (short)c.B, (short)c.A)
+        { }
+    }
+}

Modified: branches/4.0/MgDev/Bindings/src/SwigCommon/DotNet/sugar.i
===================================================================
--- branches/4.0/MgDev/Bindings/src/SwigCommon/DotNet/sugar.i	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Bindings/src/SwigCommon/DotNet/sugar.i	2025-02-06 02:59:26 UTC (rev 10118)
@@ -142,7 +142,7 @@
         get { return this.GetItem(index); }
     }
     
-    int IReadOnlyCollection<item_type>.Count
+    public int Count
     {
         get { return this.GetCount(); }
     }

Deleted: branches/4.0/MgDev/Portable/DesktopUnmanagedApi/DotNet/MgDesktop.snk
===================================================================
(Binary files differ)

Copied: branches/4.0/MgDev/Portable/DesktopUnmanagedApi/DotNet/MgPortable.snk (from rev 10117, branches/4.0/MgDev/Portable/DesktopUnmanagedApi/DotNet/MgDesktop.snk)
===================================================================
(Binary files differ)

Modified: branches/4.0/MgDev/Portable/DotNetHarness/DotNetHarness.csproj
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/DotNetHarness.csproj	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/DotNetHarness.csproj	2025-02-06 02:59:26 UTC (rev 10118)
@@ -1,502 +1,24 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project Sdk="Microsoft.NET.Sdk">
+
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{A5881D59-BD24-4A3A-A707-F18A25724D29}</ProjectGuid>
+    <TargetFramework>net6.0-windows</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <UseWindowsForms>true</UseWindowsForms>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
     <OutputType>WinExe</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>DotNetHarness</RootNamespace>
-    <AssemblyName>DotNetHarness</AssemblyName>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
   </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>..\bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <Prefer32Bit>false</Prefer32Bit>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+    <NoWarn>1701;1702;CA1416</NoWarn>
   </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <OutputPath>..\bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <Prefer32Bit>false</Prefer32Bit>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+    <NoWarn>1701;1702;CA1416</NoWarn>
   </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x64\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
-    <OutputPath>bin\x64\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
+	
   <ItemGroup>
-    <Reference Include="OSGeo.MapGuide.Desktop, Version=2.4.0.0, Culture=neutral, processorArchitecture=x86">
-      <SpecificVersion>False</SpecificVersion>
-      <Private>False</Private>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="OSGeo.MapGuide.Foundation, Version=1.0.0.1, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
-      <SpecificVersion>False</SpecificVersion>
-      <Private>False</Private>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.Foundation.dll</HintPath>
-    </Reference>
-    <Reference Include="OSGeo.MapGuide.Geometry, Version=1.0.0.1, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
-      <SpecificVersion>False</SpecificVersion>
-      <Private>False</Private>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.Geometry.dll</HintPath>
-    </Reference>
-    <Reference Include="OSGeo.MapGuide.PlatformBase, Version=1.0.0.1, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
-      <SpecificVersion>False</SpecificVersion>
-      <Private>False</Private>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.PlatformBase.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Xml.Linq">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data.DataSetExtensions">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Deployment" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
+    <ProjectReference Include="..\..\Bindings\src\Managed\DotNet\OSGeo.MapGuide.Portable\OSGeo.MapGuide.Portable.csproj" />
+    <ProjectReference Include="..\OSGeo.MapGuide.Viewer\OSGeo.MapGuide.Viewer.csproj" />
   </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Feature\CreateFeatureSourceCtrl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Feature\CreateFeatureSourceCtrl.Designer.cs">
-      <DependentUpon>CreateFeatureSourceCtrl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Feature\GetSchemaMappingCtrl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Feature\GetSchemaMappingCtrl.Designer.cs">
-      <DependentUpon>GetSchemaMappingCtrl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Feature\RegisterProviderCtrl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Feature\RegisterProviderCtrl.Designer.cs">
-      <DependentUpon>RegisterProviderCtrl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Feature\SelectAggregatesControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Feature\SelectAggregatesControl.Designer.cs">
-      <DependentUpon>SelectAggregatesControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Feature\EnumerateDataStoresControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Feature\EnumerateDataStoresControl.Designer.cs">
-      <DependentUpon>EnumerateDataStoresControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Feature\ExecuteSqlControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Feature\ExecuteSqlControl.Designer.cs">
-      <DependentUpon>ExecuteSqlControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Feature\ExecuteSqlNonQueryControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Feature\ExecuteSqlNonQueryControl.Designer.cs">
-      <DependentUpon>ExecuteSqlNonQueryControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Feature\GetCapabilitiesControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Feature\GetCapabilitiesControl.Designer.cs">
-      <DependentUpon>GetCapabilitiesControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Feature\GetClassesControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Feature\GetClassesControl.Designer.cs">
-      <DependentUpon>GetClassesControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Feature\GetFeatureProvidersControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Feature\GetFeatureProvidersControl.Designer.cs">
-      <DependentUpon>GetFeatureProvidersControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Feature\GetSchemasControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Feature\GetSchemasControl.Designer.cs">
-      <DependentUpon>GetSchemasControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Feature\GetSpatialContextsControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Feature\GetSpatialContextsControl.Designer.cs">
-      <DependentUpon>GetSpatialContextsControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Feature\SelectFeaturesControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Feature\SelectFeaturesControl.Designer.cs">
-      <DependentUpon>SelectFeaturesControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Feature\TestConnectionControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Feature\TestConnectionControl.Designer.cs">
-      <DependentUpon>TestConnectionControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Form1.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="Form1.Designer.cs">
-      <DependentUpon>Form1.cs</DependentUpon>
-    </Compile>
-    <Compile Include="ImageResponseDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="ImageResponseDialog.Designer.cs">
-      <DependentUpon>ImageResponseDialog.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Program.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <EmbeddedResource Include="Feature\CreateFeatureSourceCtrl.resx">
-      <DependentUpon>CreateFeatureSourceCtrl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Feature\GetSchemaMappingCtrl.resx">
-      <DependentUpon>GetSchemaMappingCtrl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Feature\RegisterProviderCtrl.resx">
-      <DependentUpon>RegisterProviderCtrl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Feature\SelectAggregatesControl.resx">
-      <DependentUpon>SelectAggregatesControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Feature\EnumerateDataStoresControl.resx">
-      <DependentUpon>EnumerateDataStoresControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Feature\ExecuteSqlControl.resx">
-      <DependentUpon>ExecuteSqlControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Feature\ExecuteSqlNonQueryControl.resx">
-      <DependentUpon>ExecuteSqlNonQueryControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Feature\GetCapabilitiesControl.resx">
-      <DependentUpon>GetCapabilitiesControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Feature\GetClassesControl.resx">
-      <DependentUpon>GetClassesControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Feature\GetFeatureProvidersControl.resx">
-      <DependentUpon>GetFeatureProvidersControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Feature\GetSchemasControl.resx">
-      <DependentUpon>GetSchemasControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Feature\GetSpatialContextsControl.resx">
-      <DependentUpon>GetSpatialContextsControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Feature\SelectFeaturesControl.resx">
-      <DependentUpon>SelectFeaturesControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Feature\TestConnectionControl.resx">
-      <DependentUpon>TestConnectionControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Form1.resx">
-      <DependentUpon>Form1.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ImageResponseDialog.resx">
-      <DependentUpon>ImageResponseDialog.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Properties\Resources.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ReaderResponseDialog.resx">
-      <DependentUpon>ReaderResponseDialog.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Rendering\RenderDynamicOverlayControl.resx">
-      <DependentUpon>RenderDynamicOverlayControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Rendering\RenderMapControl.resx">
-      <DependentUpon>RenderMapControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Rendering\RenderTileControl.resx">
-      <DependentUpon>RenderTileControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Resource\ApplyResourcePackageControl.resx">
-      <DependentUpon>ApplyResourcePackageControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Resource\CopyResourceControl.resx">
-      <DependentUpon>CopyResourceControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Resource\DeleteResourceControl.resx">
-      <DependentUpon>DeleteResourceControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Resource\DeleteResourceDataControl.resx">
-      <DependentUpon>DeleteResourceDataControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Resource\EnumerateResourceDataControl.resx">
-      <DependentUpon>EnumerateResourceDataControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Resource\EnumerateResourcesControl.resx">
-      <DependentUpon>EnumerateResourcesControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Resource\EnumerateUnmanagedDataControl.resx">
-      <DependentUpon>EnumerateUnmanagedDataControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Resource\GetResourceContentControl.resx">
-      <DependentUpon>GetResourceContentControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Resource\GetResourceDataControl.resx">
-      <DependentUpon>GetResourceDataControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Resource\MoveResourceControl.resx">
-      <DependentUpon>MoveResourceControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Resource\RenameResourceDataControl.resx">
-      <DependentUpon>RenameResourceDataControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Resource\ResourceExistsControl.resx">
-      <DependentUpon>ResourceExistsControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Resource\SetResourceControl.resx">
-      <DependentUpon>SetResourceControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Resource\SetResourceDataControl.resx">
-      <DependentUpon>SetResourceDataControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="SpatialContextResultDialog.resx">
-      <DependentUpon>SpatialContextResultDialog.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Tile\GetTileControl.resx">
-      <DependentUpon>GetTileControl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="XmlResponseDialog.resx">
-      <DependentUpon>XmlResponseDialog.cs</DependentUpon>
-    </EmbeddedResource>
-    <Compile Include="Properties\Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DependentUpon>Resources.resx</DependentUpon>
-      <DesignTime>True</DesignTime>
-    </Compile>
-    <None Include="..\MgPortable\Platform.ini">
-      <Link>Platform.ini</Link>
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-    <None Include="app.config" />
-    <None Include="Properties\Settings.settings">
-      <Generator>SettingsSingleFileGenerator</Generator>
-      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
-    </None>
-    <Compile Include="Properties\Settings.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DependentUpon>Settings.settings</DependentUpon>
-      <DesignTimeSharedInput>True</DesignTimeSharedInput>
-    </Compile>
-    <Compile Include="ReaderResponseDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="ReaderResponseDialog.Designer.cs">
-      <DependentUpon>ReaderResponseDialog.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Rendering\RenderDynamicOverlayControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Rendering\RenderDynamicOverlayControl.Designer.cs">
-      <DependentUpon>RenderDynamicOverlayControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Rendering\RenderMapControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Rendering\RenderMapControl.Designer.cs">
-      <DependentUpon>RenderMapControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Rendering\RenderTileControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Rendering\RenderTileControl.Designer.cs">
-      <DependentUpon>RenderTileControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Resource\ApplyResourcePackageControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Resource\ApplyResourcePackageControl.Designer.cs">
-      <DependentUpon>ApplyResourcePackageControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Resource\CopyResourceControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Resource\CopyResourceControl.Designer.cs">
-      <DependentUpon>CopyResourceControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Resource\DeleteResourceControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Resource\DeleteResourceControl.Designer.cs">
-      <DependentUpon>DeleteResourceControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Resource\DeleteResourceDataControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Resource\DeleteResourceDataControl.Designer.cs">
-      <DependentUpon>DeleteResourceDataControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Resource\EnumerateResourceDataControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Resource\EnumerateResourceDataControl.Designer.cs">
-      <DependentUpon>EnumerateResourceDataControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Resource\EnumerateResourcesControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Resource\EnumerateResourcesControl.Designer.cs">
-      <DependentUpon>EnumerateResourcesControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Resource\EnumerateUnmanagedDataControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Resource\EnumerateUnmanagedDataControl.Designer.cs">
-      <DependentUpon>EnumerateUnmanagedDataControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Resource\GetResourceContentControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Resource\GetResourceContentControl.Designer.cs">
-      <DependentUpon>GetResourceContentControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Resource\GetResourceDataControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Resource\GetResourceDataControl.Designer.cs">
-      <DependentUpon>GetResourceDataControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Resource\MoveResourceControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Resource\MoveResourceControl.Designer.cs">
-      <DependentUpon>MoveResourceControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Resource\MultiGetResourceContentControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Resource\MultiGetResourceContentControl.Designer.cs">
-      <DependentUpon>MultiGetResourceContentControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Resource\RenameResourceDataControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Resource\RenameResourceDataControl.Designer.cs">
-      <DependentUpon>RenameResourceDataControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Resource\ResourceExistsControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Resource\ResourceExistsControl.Designer.cs">
-      <DependentUpon>ResourceExistsControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Resource\SetResourceControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Resource\SetResourceControl.Designer.cs">
-      <DependentUpon>SetResourceControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Resource\SetResourceDataControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Resource\SetResourceDataControl.Designer.cs">
-      <DependentUpon>SetResourceDataControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="SpatialContextResultDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="SpatialContextResultDialog.Designer.cs">
-      <DependentUpon>SpatialContextResultDialog.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Tile\GetTileControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Tile\GetTileControl.Designer.cs">
-      <DependentUpon>GetTileControl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="XmlResponseDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="XmlResponseDialog.Designer.cs">
-      <DependentUpon>XmlResponseDialog.cs</DependentUpon>
-    </Compile>
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
-      <Visible>False</Visible>
-      <ProductName>Windows Installer 3.1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\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>
\ No newline at end of file
+
+</Project>

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Feature/CreateFeatureSourceCtrl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Feature/CreateFeatureSourceCtrl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Feature/CreateFeatureSourceCtrl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -34,8 +34,8 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
-                var featureSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
+                var fact = new MgPortableServiceFactory();
+                var featureSvc = (MgPortableFeatureService)fact.CreateService(MgServiceType.FeatureService);
                 var param = new MgFileFeatureSourceParams();
                 param.CoordinateSystemWkt = txtCoordinateSystemWkt.Text;
                 param.FileName = txtFileName.Text;
@@ -64,9 +64,9 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
-                var featureSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
-                var param = new MgdRdbmsFeatureSourceParams();
+                var fact = new MgPortableServiceFactory();
+                var featureSvc = (MgPortableFeatureService)fact.CreateService(MgServiceType.FeatureService);
+                var param = new MgPortableRdbmsFeatureSourceParams();
                 param.CoordinateSystemWkt = txtCoordinateSystemWkt.Text;
 
                 param.Service = txtService.Text;

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Feature/EnumerateDataStoresControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Feature/EnumerateDataStoresControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Feature/EnumerateDataStoresControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -21,8 +21,8 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
-                MgFeatureService featSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
+                var fact = new MgPortableServiceFactory();
+                MgFeatureService featSvc = (MgPortableFeatureService)fact.CreateService(MgServiceType.FeatureService);
 
                 MgByteReader response = featSvc.EnumerateDataStores(textBox1.Text, textBox2.Text);
                 new XmlResponseDialog(response).ShowDialog();

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Feature/ExecuteSqlControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Feature/ExecuteSqlControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Feature/ExecuteSqlControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -21,8 +21,8 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
-                MgFeatureService featSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
+                var fact = new MgPortableServiceFactory();
+                MgFeatureService featSvc = (MgPortableFeatureService)fact.CreateService(MgServiceType.FeatureService);
                 MgResourceIdentifier fsId = new MgResourceIdentifier(textBox1.Text);
                 string sql = textBox2.Text;
 

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Feature/ExecuteSqlNonQueryControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Feature/ExecuteSqlNonQueryControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Feature/ExecuteSqlNonQueryControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -21,8 +21,8 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
-                MgFeatureService featSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
+                var fact = new MgPortableServiceFactory();
+                MgFeatureService featSvc = (MgPortableFeatureService)fact.CreateService(MgServiceType.FeatureService);
                 MgResourceIdentifier resId = new MgResourceIdentifier(textBox1.Text);
                 string sql = textBox2.Text;
 

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetCapabilitiesControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetCapabilitiesControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetCapabilitiesControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -1,23 +1,15 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Linq;
-using System.Text;
-using System.Windows.Forms;
-using OSGeo.MapGuide;
+using OSGeo.MapGuide;
 
 namespace DotNetHarness.Feature
 {
     public partial class GetCapabilitiesControl : UserControl
     {
-        private MgdServiceFactory fact;
+        private MgPortableServiceFactory fact;
 
         public GetCapabilitiesControl()
         {
             InitializeComponent();
-            fact = new MgdServiceFactory();
+            fact = new MgPortableServiceFactory();
         }
 
         private void button1_Click(object sender, EventArgs e)
@@ -24,7 +16,7 @@
         {
             try
             {
-                MgFeatureService featSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
+                MgFeatureService featSvc = (MgPortableFeatureService)fact.CreateService(MgServiceType.FeatureService);
 
                 MgByteReader response = featSvc.GetCapabilities(txtFdoProvider.Text);
                 new XmlResponseDialog(response).ShowDialog();
@@ -39,7 +31,7 @@
         {
             try
             {
-                MgFeatureService featSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
+                MgFeatureService featSvc = (MgPortableFeatureService)fact.CreateService(MgServiceType.FeatureService);
 
                 MgByteReader response = featSvc.GetCapabilities(textBox1.Text, txtConnectionString.Text);
                 new XmlResponseDialog(response).ShowDialog();

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetClassesControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetClassesControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetClassesControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -21,8 +21,8 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
-                MgFeatureService featSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
+                var fact = new MgPortableServiceFactory();
+                MgFeatureService featSvc = (MgPortableFeatureService)fact.CreateService(MgServiceType.FeatureService);
                 MgResourceIdentifier fsId = new MgResourceIdentifier(txtFeatureSource.Text);
 
 

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetFeatureProvidersControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetFeatureProvidersControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetFeatureProvidersControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -21,8 +21,8 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
-                MgFeatureService featSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
+                var fact = new MgPortableServiceFactory();
+                MgFeatureService featSvc = (MgPortableFeatureService)fact.CreateService(MgServiceType.FeatureService);
                 MgByteReader response = featSvc.GetFeatureProviders();
 
                 new XmlResponseDialog(response).ShowDialog();

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetSchemaMappingCtrl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetSchemaMappingCtrl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetSchemaMappingCtrl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -21,8 +21,8 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
-                var featureSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
+                var fact = new MgPortableServiceFactory();
+                var featureSvc = (MgPortableFeatureService)fact.CreateService(MgServiceType.FeatureService);
                 var response = featureSvc.GetSchemaMapping(txtProvider.Text, txtConnString.Text);
                 new XmlResponseDialog(response).ShowDialog();
             }

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetSchemasControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetSchemasControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetSchemasControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -21,8 +21,8 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
-                MgFeatureService featSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
+                var fact = new MgPortableServiceFactory();
+                MgFeatureService featSvc = (MgPortableFeatureService)fact.CreateService(MgServiceType.FeatureService);
                 MgResourceIdentifier fsId = new MgResourceIdentifier(txtFeatureSource.Text);
 
                 MgStringCollection schemas = featSvc.GetSchemas(fsId);

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetSpatialContextsControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetSpatialContextsControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Feature/GetSpatialContextsControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -21,8 +21,8 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
-                MgFeatureService featSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
+                var fact = new MgPortableServiceFactory();
+                MgFeatureService featSvc = (MgPortableFeatureService)fact.CreateService(MgServiceType.FeatureService);
                 MgResourceIdentifier fsId = new MgResourceIdentifier(textBox1.Text);
                 MgSpatialContextReader response = featSvc.GetSpatialContexts(fsId, checkBox1.Checked);
 

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Feature/RegisterProviderCtrl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Feature/RegisterProviderCtrl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Feature/RegisterProviderCtrl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -34,8 +34,8 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
-                var featureSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
+                var fact = new MgPortableServiceFactory();
+                var featureSvc = (MgPortableFeatureService)fact.CreateService(MgServiceType.FeatureService);
                 featureSvc.RegisterProvider(txtProviderPath.Text);
                 MessageBox.Show("Success");
             }

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Feature/SelectAggregatesControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Feature/SelectAggregatesControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Feature/SelectAggregatesControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -49,8 +49,8 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
-                MgFeatureService featSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
+                var fact = new MgPortableServiceFactory();
+                MgFeatureService featSvc = (MgPortableFeatureService)fact.CreateService(MgServiceType.FeatureService);
                 MgFeatureAggregateOptions query = new MgFeatureAggregateOptions();
                 string[] propNames = txtProps.Text.Split(',');
                 foreach (var p in propNames)
@@ -73,7 +73,7 @@
 
                 MgResourceIdentifier fsId = new MgResourceIdentifier(txtFeatureSource.Text);
 
-                MgDataReader reader = featSvc.SelectAggregate(fsId, txtClass.Text, query);
+                var reader = featSvc.SelectAggregate(fsId, txtClass.Text, query);
                 new ReaderResponseDialog(reader).ShowDialog();
             }
             catch (MgException ex)

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Feature/SelectFeaturesControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Feature/SelectFeaturesControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Feature/SelectFeaturesControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -49,8 +49,8 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
-                MgFeatureService featSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
+                var fact = new MgPortableServiceFactory();
+                MgFeatureService featSvc = (MgPortableFeatureService)fact.CreateService(MgServiceType.FeatureService);
                 MgFeatureQueryOptions query = new MgFeatureQueryOptions();
                 string[] propNames = txtProps.Text.Split(',');
                 foreach (var p in propNames)

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Feature/TestConnectionControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Feature/TestConnectionControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Feature/TestConnectionControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -21,8 +21,8 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
-                MgFeatureService featSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
+                var fact = new MgPortableServiceFactory();
+                MgFeatureService featSvc = (MgPortableFeatureService)fact.CreateService(MgServiceType.FeatureService);
                 MgResourceIdentifier fsId = new MgResourceIdentifier(txtFeatureSource.Text);
 
                 bool res = featSvc.TestConnection(fsId);
@@ -38,8 +38,8 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
-                MgFeatureService featSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
+                var fact = new MgPortableServiceFactory();
+                MgFeatureService featSvc = (MgPortableFeatureService)fact.CreateService(MgServiceType.FeatureService);
 
                 bool res = featSvc.TestConnection(txtFdoProvider.Text, txtConnectionString.Text);
                 MessageBox.Show("Result: " + res);

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Program.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Program.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Program.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -17,7 +17,7 @@
         {
             var sw = new Stopwatch();
             sw.Start();
-            MgdPlatform.Initialize("Platform.ini");
+            MgPortablePlatform.Initialize("Platform.ini");
             sw.Stop();
 
             Trace.TraceInformation("Platform initialization took {0}ms", sw.ElapsedMilliseconds);
@@ -24,7 +24,7 @@
 
             Application.ApplicationExit += (s, e) =>
             {
-                MgdPlatform.Terminate();
+                MgPortablePlatform.Terminate();
             };
             Application.EnableVisualStyles();
             Application.SetCompatibleTextRenderingDefault(false);

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Rendering/RenderDynamicOverlayControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Rendering/RenderDynamicOverlayControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Rendering/RenderDynamicOverlayControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -22,21 +22,21 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
-                MgdRenderingService renSvc = (MgdRenderingService)fact.CreateService(MgServiceType.RenderingService);
+                var fact = new MgPortableServiceFactory();
+                MgPortableRenderingService renSvc = (MgPortableRenderingService)fact.CreateService(MgServiceType.RenderingService);
                 MgResourceIdentifier resId = new MgResourceIdentifier(textBox1.Text);
 
                 var sw = new Stopwatch();
                 sw.Start();
-                MgdMap map = new MgdMap(resId);
+                MgPortableMap map = new MgPortableMap(resId);
                 sw.Stop();
                 Trace.TraceInformation("Runtime map created in {0}ms", sw.ElapsedMilliseconds);
-                MgdSelection selection = null;
+                MgPortableSelection selection = null;
 
                 if (!string.IsNullOrEmpty(txtSelectLayer.Text) &&
                     !string.IsNullOrEmpty(txtSelectFilter.Text))
                 {
-                    selection = new MgdSelection(map);
+                    selection = new MgPortableSelection(map);
 
                     var layers = map.GetLayers();
                     if (layers.IndexOf(txtSelectLayer.Text) >= 0)
@@ -82,7 +82,7 @@
                 }
 
                 MgColor selColor = new MgColor("0x0000FFFF");
-                MgdRenderingOptions renderOpts = new MgdRenderingOptions(textBox5.Text, mode, selColor);
+                MgPortableRenderingOptions renderOpts = new MgPortableRenderingOptions(textBox5.Text, mode, selColor);
 
                 sw.Start();
                 MgByteReader response = renSvc.RenderDynamicOverlay(map, selection, renderOpts);

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Rendering/RenderMapControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Rendering/RenderMapControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Rendering/RenderMapControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -25,11 +25,11 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
-                MgdRenderingService renSvc = (MgdRenderingService)fact.CreateService(MgServiceType.RenderingService);
+                var fact = new MgPortableServiceFactory();
+                MgPortableRenderingService renSvc = (MgPortableRenderingService)fact.CreateService(MgServiceType.RenderingService);
                 MgResourceIdentifier resId = new MgResourceIdentifier(textBox1.Text);
 
-                MgdMap map = new MgdMap(resId);
+                MgPortableMap map = new MgPortableMap(resId);
 
                 double x;
                 double y;

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Rendering/RenderTileControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Rendering/RenderTileControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Rendering/RenderTileControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -22,13 +22,13 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
-                MgdRenderingService renSvc = (MgdRenderingService)fact.CreateService(MgServiceType.RenderingService);
+                var fact = new MgPortableServiceFactory();
+                MgPortableRenderingService renSvc = (MgPortableRenderingService)fact.CreateService(MgServiceType.RenderingService);
 
                 MgResourceIdentifier mdfId = new MgResourceIdentifier(txtMapDefinition.Text);
                 var sw = new Stopwatch();
                 sw.Start();
-                MgdMap map = new MgdMap(mdfId);
+                MgPortableMap map = new MgPortableMap(mdfId);
                 sw.Stop();
                 Trace.TraceInformation("Runtime map created in {0}ms", sw.ElapsedMilliseconds);
 

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Resource/ApplyResourcePackageControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Resource/ApplyResourcePackageControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Resource/ApplyResourcePackageControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -29,7 +29,7 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 MgResourceService resSvc = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
 
                 MgByteSource source = new MgByteSource(textBox1.Text);

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Resource/CopyResourceControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Resource/CopyResourceControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Resource/CopyResourceControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -21,7 +21,7 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 MgResourceService resSvc = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
                 MgResourceIdentifier source = new MgResourceIdentifier(textBox1.Text);
                 MgResourceIdentifier target = new MgResourceIdentifier(textBox2.Text);

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Resource/DeleteResourceControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Resource/DeleteResourceControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Resource/DeleteResourceControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -21,7 +21,7 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 MgResourceService resSvc = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
                 MgResourceIdentifier resId = new MgResourceIdentifier(textBox1.Text);
 

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Resource/DeleteResourceDataControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Resource/DeleteResourceDataControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Resource/DeleteResourceDataControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -21,7 +21,7 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 MgResourceService resSvc = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
                 MgResourceIdentifier resId = new MgResourceIdentifier(textBox1.Text);
                 resSvc.DeleteResourceData(resId, textBox2.Text);

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Resource/EnumerateResourceDataControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Resource/EnumerateResourceDataControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Resource/EnumerateResourceDataControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -21,7 +21,7 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 MgResourceService resSvc = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
                 MgResourceIdentifier resId = new MgResourceIdentifier(textBox1.Text);
                 MgByteReader response = resSvc.EnumerateResourceData(resId);

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Resource/EnumerateResourcesControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Resource/EnumerateResourcesControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Resource/EnumerateResourcesControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -21,7 +21,7 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 MgResourceService resSvc = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
                 MgResourceIdentifier resId = new MgResourceIdentifier(txtResourceId.Text);
                 string type = txtType.Text;

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Resource/EnumerateUnmanagedDataControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Resource/EnumerateUnmanagedDataControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Resource/EnumerateUnmanagedDataControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -21,7 +21,7 @@
         {
             try
             {
-                MgdServiceFactory fact = new MgdServiceFactory();
+                MgPortableServiceFactory fact = new MgPortableServiceFactory();
                 MgResourceService resSvc = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
 
                 MgByteReader response = resSvc.EnumerateUnmanagedData(txtPath.Text, chkRecursive.Checked, txtType.Text, txtFilter.Text);

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Resource/GetResourceContentControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Resource/GetResourceContentControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Resource/GetResourceContentControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -21,7 +21,7 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 MgResourceService resSvc = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
                 MgResourceIdentifier resId = new MgResourceIdentifier(textBox1.Text);
                 MgByteReader reader = resSvc.GetResourceContent(resId);

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Resource/GetResourceDataControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Resource/GetResourceDataControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Resource/GetResourceDataControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -21,7 +21,7 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 MgResourceService resSvc = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
                 MgResourceIdentifier resId = new MgResourceIdentifier(textBox1.Text);
                 MgByteReader response = resSvc.GetResourceData(resId, textBox2.Text);

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Resource/MoveResourceControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Resource/MoveResourceControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Resource/MoveResourceControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -21,7 +21,7 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 MgResourceService resSvc = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
                 MgResourceIdentifier source = new MgResourceIdentifier(textBox1.Text);
                 MgResourceIdentifier target = new MgResourceIdentifier(textBox2.Text);

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Resource/RenameResourceDataControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Resource/RenameResourceDataControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Resource/RenameResourceDataControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -21,7 +21,7 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 MgResourceService resSvc = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
                 MgResourceIdentifier resId = new MgResourceIdentifier(textBox1.Text);
                 resSvc.RenameResourceData(resId, textBox2.Text, textBox3.Text, checkBox1.Checked);

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Resource/ResourceExistsControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Resource/ResourceExistsControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Resource/ResourceExistsControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -21,7 +21,7 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 MgResourceService resSvc = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
 
                 MgResourceIdentifier resId = new MgResourceIdentifier(textBox1.Text);

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Resource/SetResourceControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Resource/SetResourceControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Resource/SetResourceControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -29,7 +29,7 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 MgResourceService resSvc = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
                 MgResourceIdentifier resId = new MgResourceIdentifier(textBox1.Text);
                 MgByteSource source = new MgByteSource(textBox2.Text);

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Resource/SetResourceDataControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Resource/SetResourceDataControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Resource/SetResourceDataControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -29,7 +29,7 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 MgResourceService resSvc = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
                 MgResourceIdentifier resId = new MgResourceIdentifier(textBox1.Text);
                 string dataName = textBox2.Text;

Modified: branches/4.0/MgDev/Portable/DotNetHarness/Tile/GetTileControl.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetHarness/Tile/GetTileControl.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetHarness/Tile/GetTileControl.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -22,8 +22,8 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
-                MgdTileService renSvc = (MgdTileService)fact.CreateService(MgServiceType.TileService);
+                var fact = new MgPortableServiceFactory();
+                MgPortableTileService renSvc = (MgPortableTileService)fact.CreateService(MgServiceType.TileService);
 
                 MgResourceIdentifier mdfId = new MgResourceIdentifier(txtMapDefinition.Text);
                 if (rdRuntimeMap.Checked)
@@ -30,7 +30,7 @@
                 {
                     var sw = new Stopwatch();
                     sw.Start();
-                    MgdMap map = new MgdMap(mdfId);
+                    MgPortableMap map = new MgPortableMap(mdfId);
                     sw.Stop();
                     Trace.TraceInformation("Runtime map created in {0}ms", sw.ElapsedMilliseconds);
 

Modified: branches/4.0/MgDev/Portable/DotNetUnitTest/Assert.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetUnitTest/Assert.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetUnitTest/Assert.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -1,4 +1,5 @@
-using System;
+using OSGeo.MapGuide;
+using System;
 using System.Collections.Generic;
 using System.Text;
 
@@ -62,5 +63,18 @@
 
             }
         }
+
+        public static void ThrowsWithCode(Action method, string expectedCode)
+        {
+            try
+            {
+                method();
+                Fail("Expected thrown exception");
+            }
+            catch (MgException ex)
+            {
+                AreEqual(ex.GetExceptionCode(), expectedCode);
+            }
+        }
     }
 }

Modified: branches/4.0/MgDev/Portable/DotNetUnitTest/DotNetUnitTest.csproj
===================================================================
--- branches/4.0/MgDev/Portable/DotNetUnitTest/DotNetUnitTest.csproj	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetUnitTest/DotNetUnitTest.csproj	2025-02-06 02:59:26 UTC (rev 10118)
@@ -1,136 +1,21 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project Sdk="Microsoft.NET.Sdk">
+
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{FDA196F0-3C55-4360-B207-BA5EF6D746F8}</ProjectGuid>
-    <OutputType>Exe</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>DotNetUnitTest</RootNamespace>
-    <AssemblyName>DotNetUnitTest</AssemblyName>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <StartupObject>
-    </StartupObject>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFramework>net6.0-windows</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
   </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>..\bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <Prefer32Bit>false</Prefer32Bit>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+    <NoWarn>1701;1702;CA1416</NoWarn>
   </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <OutputPath>..\bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <Prefer32Bit>false</Prefer32Bit>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+    <NoWarn>1701;1702;CA1416</NoWarn>
   </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x64\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
-    <OutputPath>bin\x64\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
+
   <ItemGroup>
-    <Reference Include="OSGeo.MapGuide.Desktop, Version=2.4.0.0, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f, processorArchitecture=x86">
-      <SpecificVersion>False</SpecificVersion>
-      <Private>False</Private>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="OSGeo.MapGuide.Foundation, Version=1.0.0.1, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
-      <SpecificVersion>False</SpecificVersion>
-      <Private>False</Private>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.Foundation.dll</HintPath>
-    </Reference>
-    <Reference Include="OSGeo.MapGuide.Geometry, Version=1.0.0.1, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
-      <SpecificVersion>False</SpecificVersion>
-      <Private>False</Private>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.Geometry.dll</HintPath>
-    </Reference>
-    <Reference Include="OSGeo.MapGuide.PlatformBase, Version=1.0.0.1, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
-      <SpecificVersion>False</SpecificVersion>
-      <Private>False</Private>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.PlatformBase.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Xml" />
+    <ProjectReference Include="..\..\Bindings\src\Managed\DotNet\OSGeo.MapGuide.Portable\OSGeo.MapGuide.Portable.csproj" />
   </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Assert.cs" />
-    <Compile Include="FeatureServiceTests.cs" />
-    <Compile Include="Program.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="RenderingServiceTests.cs" />
-    <Compile Include="ResourceServiceTests.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="app.config" />
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
-      <Visible>False</Visible>
-      <ProductName>Windows Installer 3.1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\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>
\ No newline at end of file
+
+</Project>

Modified: branches/4.0/MgDev/Portable/DotNetUnitTest/Program.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetUnitTest/Program.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetUnitTest/Program.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -32,7 +32,7 @@
 
         public static void Main()
         {
-            MgdPlatform.Initialize("Platform.ini");
+            MgPortablePlatform.Initialize("Platform.ini");
 
             var resTest = new ResourceServiceTests();
             try

Modified: branches/4.0/MgDev/Portable/DotNetUnitTest/ResourceServiceTests.cs
===================================================================
--- branches/4.0/MgDev/Portable/DotNetUnitTest/ResourceServiceTests.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/DotNetUnitTest/ResourceServiceTests.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -37,8 +37,8 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
-                MgdResourceService service = (MgdResourceService)fact.CreateService(MgServiceType.ResourceService);
+                var fact = new MgPortableServiceFactory();
+                MgPortableResourceService service = (MgPortableResourceService)fact.CreateService(MgServiceType.ResourceService);
                 MgResourceIdentifier mapres1 = new MgResourceIdentifier("Library://UnitTests/Data/Shuttle.DrawingSource");
                 service.DeleteResource(mapres1);
 
@@ -65,9 +65,9 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 var service = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
-                Assert.Throws<MgNullArgumentException>(() => service.ApplyResourcePackage(null));
+                Assert.ThrowsWithCode(() => service.ApplyResourcePackage(null), MgExceptionCodes.MgNullArgumentException);
 
                 MgByteSource source = new MgByteSource(packageName);
                 source.SetMimeType(MgMimeType.Binary);
@@ -88,9 +88,9 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 var service = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
-                Assert.Throws<MgNullArgumentException>(() => service.ResourceExists(null));
+                Assert.ThrowsWithCode(() => service.ResourceExists(null), MgExceptionCodes.MgNullArgumentException);
 
                 Assert.True(service.ResourceExists(libraryRepositoryIdentifier));
                 Assert.False(service.ResourceExists(resourceNotExist));
@@ -108,12 +108,12 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 var service = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
 
                 //Try to use NULL arguments
-                Assert.Throws<MgNullArgumentException>(() => service.SetResource(null, null, null));
-                Assert.Throws<MgNullArgumentException>(() => service.SetResource(resourceIdentifier, null, null));
+                Assert.ThrowsWithCode(() => service.SetResource(null, null, null), MgExceptionCodes.MgNullArgumentException);
+                Assert.ThrowsWithCode(() => service.SetResource(resourceIdentifier, null, null), MgExceptionCodes.MgNullArgumentException);
 
                 //Add a new resource
                 MgByteSource source = new MgByteSource(resourceContentFileName);
@@ -141,16 +141,16 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 var service = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
 
                 //Try to use NULL arguments
-                Assert.Throws<MgNullArgumentException>(() => service.MoveResource(null, null, true, false));
-                Assert.Throws<MgNullArgumentException>(() => service.MoveResource(resourceIdentifier, null, true, true));
-                Assert.Throws<MgNullArgumentException>(() => service.MoveResource(null, resourceIdentifier, true, true));
+                Assert.ThrowsWithCode(() => service.MoveResource(null, null, true, false), MgExceptionCodes.MgNullArgumentException);
+                Assert.ThrowsWithCode(() => service.MoveResource(resourceIdentifier, null, true, true), MgExceptionCodes.MgNullArgumentException);
+                Assert.ThrowsWithCode(() => service.MoveResource(null, resourceIdentifier, true, true), MgExceptionCodes.MgNullArgumentException);
 
                 //Try to move a resource that doesn't exist
-                Assert.Throws<MgResourceNotFoundException>(() => service.MoveResource(resourceNotExist, resourceIdentifier2, false, true));
+                Assert.ThrowsWithCode(() => service.MoveResource(resourceNotExist, resourceIdentifier2, false, true), MgExceptionCodes.MgResourceNotFoundException);
 
                 //Move the resource that was added earlier with cascade = true, and check referencing resource.
                 service.MoveResource(resourceIdentifier, resourceIdentifier2, false, true);
@@ -169,7 +169,7 @@
                 Assert.True(!service.ResourceExists(resourceIdentifier2));
 
                 //Try to move the resource into itself (ie. itself)
-                Assert.Throws<MgInvalidArgumentException>(() => service.MoveResource(resourceIdentifier, resourceIdentifier, false));
+                Assert.ThrowsWithCode(() => service.MoveResource(resourceIdentifier, resourceIdentifier, false), MgExceptionCodes.MgInvalidArgumentException);
             }
             catch (MgException ex)
             {
@@ -182,22 +182,22 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 var service = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
 
                 //Try to use NULL arguments
-                Assert.Throws<MgNullArgumentException>(() => service.CopyResource(null, null, true));
-                Assert.Throws<MgNullArgumentException>(() => service.CopyResource(resourceIdentifier, null, true));
-                Assert.Throws<MgNullArgumentException>(() => service.CopyResource(null, resourceIdentifier2, true));
+                Assert.ThrowsWithCode(() => service.CopyResource(null, null, true), MgExceptionCodes.MgNullArgumentException);
+                Assert.ThrowsWithCode(() => service.CopyResource(resourceIdentifier, null, true), MgExceptionCodes.MgNullArgumentException);
+                Assert.ThrowsWithCode(() => service.CopyResource(null, resourceIdentifier2, true), MgExceptionCodes.MgNullArgumentException);
 
                 //Try to use source & destination as the same thing
-                Assert.Throws<MgInvalidArgumentException>(() => service.CopyResource(resourceIdentifier2, resourceIdentifier2, false));
+                Assert.ThrowsWithCode(() => service.CopyResource(resourceIdentifier2, resourceIdentifier2, false), MgExceptionCodes.MgInvalidArgumentException);
 
                 //Copy the moved resource to another location
                 service.CopyResource(resourceIdentifier, resourceIdentifier2, false);
 
                 //Try to copy a resource to one that should now exist
-                Assert.Throws<MgDuplicateResourceException>(() => service.CopyResource(resourceIdentifier2, resourceIdentifier, false));
+                Assert.ThrowsWithCode(() => service.CopyResource(resourceIdentifier2, resourceIdentifier, false), MgExceptionCodes.MgDuplicateResourceException);
             }
             catch (MgException ex)
             {
@@ -210,14 +210,14 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 var service = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
 
                 //Try to get the content using NULL arguments
-                Assert.Throws<MgNullArgumentException>(() => service.GetResourceContent(null));
+                Assert.ThrowsWithCode(() => service.GetResourceContent(null), MgExceptionCodes.MgNullArgumentException);
 
                 //Try to get the content of a resource that doesn't exist
-                Assert.Throws<MgResourceNotFoundException>(() => service.GetResourceContent(resourceNotExist));
+                Assert.ThrowsWithCode(() => service.GetResourceContent(resourceNotExist), MgExceptionCodes.MgResourceNotFoundException);
 
                 //Get the content of the resource that was added in TestCase_SetResource
                 var byteReader = service.GetResourceContent(resourceIdentifier);
@@ -240,17 +240,17 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 var service = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
 
                 //Try to get the content using NULL arguments
-                Assert.Throws<MgNullArgumentException>(() => service.GetResourceContents(null, null));
+                Assert.ThrowsWithCode(() => service.GetResourceContents(null, null), MgExceptionCodes.MgNullArgumentException);
 
                 //Try to get the content of a resource that doesn't exist
                 MgStringCollection resourceNotExistCol = new MgStringCollection();
                 resourceNotExistCol.Add(resourceNotExist.ToString());
                 resourceNotExistCol.Add(resourceIdentifier.ToString());
-                Assert.Throws<MgResourceNotFoundException>(() => service.GetResourceContents(resourceNotExistCol, null));
+                Assert.ThrowsWithCode(() => service.GetResourceContents(resourceNotExistCol, null), MgExceptionCodes.MgResourceNotFoundException);
 
                 //Get the content of the resource that was added in TestCase_SetResource
                 MgStringCollection resIds = new MgStringCollection();
@@ -275,9 +275,9 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 var service = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
-                Assert.Throws<MgNotImplementedException>(() => service.GetResourceHeader(null));
+                Assert.ThrowsWithCode(() => service.GetResourceHeader(null), MgExceptionCodes.MgNotImplementedException);
             }
             catch (MgException ex)
             {
@@ -290,9 +290,9 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 var service = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
-                Assert.Throws<MgNotImplementedException>(() => service.EnumerateReferences(null));
+                Assert.ThrowsWithCode(() => service.EnumerateReferences(null), MgExceptionCodes.MgNotImplementedException);
             }
             catch (MgException ex)
             {
@@ -305,9 +305,9 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 var service = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
-                Assert.Throws<MgNotImplementedException>(() => service.ChangeResourceOwner(null, "", false));
+                Assert.ThrowsWithCode(() => service.ChangeResourceOwner(null, "", false), MgExceptionCodes.MgNotImplementedException);
             }
             catch (MgException ex)
             {
@@ -320,9 +320,9 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 var service = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
-                Assert.Throws<MgNotImplementedException>(() => service.InheritPermissionsFrom(null));
+                Assert.ThrowsWithCode(() => service.InheritPermissionsFrom(null), MgExceptionCodes.MgNotImplementedException);
             }
             catch (MgException ex)
             {
@@ -337,11 +337,11 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 var service = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
 
-                Assert.Throws<MgNullArgumentException>(() => service.EnumerateResourceData(null));
-                Assert.Throws<MgResourceNotFoundException>(() => service.EnumerateResourceData(resourceNotExist));
+                Assert.ThrowsWithCode(() => service.EnumerateResourceData(null), MgExceptionCodes.MgNullArgumentException);
+                Assert.ThrowsWithCode(() => service.EnumerateResourceData(resourceNotExist), MgExceptionCodes.MgResourceNotFoundException);
 
                 var byteReader = service.EnumerateResourceData(resourceIdentifier);
                 Assert.AreEqual(MgMimeType.Xml, byteReader.GetMimeType());
@@ -362,15 +362,15 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 var service = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
 
-                Assert.Throws<MgNullArgumentException>(() => service.SetResourceData(null, "", "", null));
+                Assert.ThrowsWithCode(() => service.SetResourceData(null, "", "", null), MgExceptionCodes.MgNullArgumentException);
 
                 var dataSource = new MgByteSource(dataFileName);
                 var dataReader = dataSource.GetReader();
 
-                Assert.Throws<MgNullArgumentException>(() => service.SetResourceData(resourceIdentifier, "", "File", dataReader));
+                Assert.ThrowsWithCode(() => service.SetResourceData(resourceIdentifier, "", "File", dataReader), MgExceptionCodes.MgNullArgumentException);
 
                 dataSource = new MgByteSource(dataFileName);
                 dataReader = dataSource.GetReader();
@@ -392,13 +392,13 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 var service = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
 
-                Assert.Throws<MgNullArgumentException>(() => service.RenameResourceData(null, resourceDataName, resourceDataName2, true));
-                Assert.Throws<MgResourceNotFoundException>(() => service.RenameResourceData(resourceNotExist, resourceDataName, resourceDataName2, true));
-                Assert.Throws<MgResourceDataNotFoundException>(() => service.RenameResourceData(resourceIdentifier, "DoesNotExist", resourceDataName2, true));
-                Assert.Throws<MgNullArgumentException>(() => service.RenameResourceData(resourceIdentifier, resourceDataName, "", true));
+                Assert.ThrowsWithCode(() => service.RenameResourceData(null, resourceDataName, resourceDataName2, true), MgExceptionCodes.MgNullArgumentException);
+                Assert.ThrowsWithCode(() => service.RenameResourceData(resourceNotExist, resourceDataName, resourceDataName2, true), MgExceptionCodes.MgResourceNotFoundException);
+                Assert.ThrowsWithCode(() => service.RenameResourceData(resourceIdentifier, "DoesNotExist", resourceDataName2, true), MgExceptionCodes.MgResourceDataNotFoundException);
+                Assert.ThrowsWithCode(() => service.RenameResourceData(resourceIdentifier, resourceDataName, "", true), MgExceptionCodes.MgNullArgumentException);
 
                 service.RenameResourceData(resourceIdentifier, resourceDataName, resourceDataName2, false);
                 var reader = service.EnumerateResourceData(resourceIdentifier);
@@ -423,13 +423,13 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 var service = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
 
-                Assert.Throws<MgNullArgumentException>(() => service.GetResourceData(null, resourceDataName));
-                Assert.Throws<MgNullArgumentException>(() => service.GetResourceData(resourceIdentifier, ""));
-                Assert.Throws<MgResourceNotFoundException>(() => service.GetResourceData(resourceNotExist, resourceDataName));
-                Assert.Throws<MgResourceDataNotFoundException>(() => service.GetResourceData(resourceIdentifier, "DoesNotExist"));
+                Assert.ThrowsWithCode(() => service.GetResourceData(null, resourceDataName), MgExceptionCodes.MgNullArgumentException);
+                Assert.ThrowsWithCode(() => service.GetResourceData(resourceIdentifier, ""), MgExceptionCodes.MgNullArgumentException);
+                Assert.ThrowsWithCode(() => service.GetResourceData(resourceNotExist, resourceDataName), MgExceptionCodes.MgResourceNotFoundException);
+                Assert.ThrowsWithCode(() => service.GetResourceData(resourceIdentifier, "DoesNotExist"), MgExceptionCodes.MgResourceDataNotFoundException);
 
                 var reader = service.GetResourceData(resourceIdentifier, resourceDataName);
                 Assert.True(reader.GetLength() > 0);
@@ -445,12 +445,12 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 var service = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
 
-                Assert.Throws<MgNullArgumentException>(() => service.DeleteResourceData(null, resourceDataName));
-                Assert.Throws<MgNullArgumentException>(() => service.DeleteResourceData(resourceIdentifier, ""));
-                Assert.Throws<MgResourceDataNotFoundException>(() => service.DeleteResourceData(resourceIdentifier, "DoesNotExist"));
+                Assert.ThrowsWithCode(() => service.DeleteResourceData(null, resourceDataName), MgExceptionCodes.MgNullArgumentException);
+                Assert.ThrowsWithCode(() => service.DeleteResourceData(resourceIdentifier, ""), MgExceptionCodes.MgNullArgumentException);
+                Assert.ThrowsWithCode(() => service.DeleteResourceData(resourceIdentifier, "DoesNotExist"), MgExceptionCodes.MgResourceDataNotFoundException);
 
                 service.DeleteResourceData(resourceIdentifier, resourceDataName);
                 //var reader = service.EnumerateResourceData(resourceIdentifier);
@@ -468,11 +468,11 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 var service = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
-                var featSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
+                var featSvc = (MgPortableFeatureService)fact.CreateService(MgServiceType.FeatureService);
 
-                Assert.Throws<MgNullArgumentException>(() => service.DeleteResource(null));
+                Assert.ThrowsWithCode(() => service.DeleteResource(null), MgExceptionCodes.MgNullArgumentException);
 
                 service.DeleteResource(resourceNotExist);
                 
@@ -493,9 +493,9 @@
                 MgFeatureAggregateOptions agg = new MgFeatureAggregateOptions();
                 agg.AddFeatureProperty("Data");
 
-                var mgdr = featSvc.SelectAggregate(resource, "TEST", agg);
-                Assert.True(mgdr.ReadNext());
-                mgdr.Close();
+                var MgPortabler = featSvc.SelectAggregate(resource, "TEST", agg);
+                Assert.True(MgPortabler.ReadNext());
+                MgPortabler.Close();
 
                 service.DeleteResource(resource);
             }
@@ -510,9 +510,9 @@
         {
             try
             {
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 var service = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
-                Assert.Throws<MgNotImplementedException>(() => service.EnumerateUnmanagedData("", true, "", ""));
+                Assert.ThrowsWithCode(() => service.EnumerateUnmanagedData("", true, "", ""), MgExceptionCodes.MgNotImplementedException);
             }
             catch (MgException ex)
             {

Modified: branches/4.0/MgDev/Portable/MapViewerTest/CompactViewer.Designer.cs
===================================================================
--- branches/4.0/MgDev/Portable/MapViewerTest/CompactViewer.Designer.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/MapViewerTest/CompactViewer.Designer.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -38,7 +38,7 @@
             this.toolbar.Name = "toolbar";
             this.toolbar.Size = new System.Drawing.Size(504, 25);
             this.toolbar.TabIndex = 0;
-            this.toolbar.Text = "mgDefaultToolbar1";
+            this.toolbar.Text = "MgDefaultToolbar1";
             this.toolbar.Viewer = null;
             // 
             // viewer

Modified: branches/4.0/MgDev/Portable/MapViewerTest/CompactViewer.cs
===================================================================
--- branches/4.0/MgDev/Portable/MapViewerTest/CompactViewer.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/MapViewerTest/CompactViewer.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -7,7 +7,7 @@
 using System.Windows.Forms;
 using OSGeo.MapGuide.Viewer;
 using OSGeo.MapGuide;
-using OSGeo.MapGuide.Viewer.Desktop;
+using OSGeo.MapGuide.Viewer.Portable;
 
 namespace MapViewerTest
 {
@@ -21,7 +21,7 @@
 
         public void LoadMap(MgResourceIdentifier resId)
         {
-            var map = new MgdMap(resId);
+            var map = new MgPortableMap(resId);
             viewer.Init(new MgPortableMapViewerProvider(map));
             //viewer.RefreshMap();
         }

Modified: branches/4.0/MgDev/Portable/MapViewerTest/MapViewerTest.csproj
===================================================================
--- branches/4.0/MgDev/Portable/MapViewerTest/MapViewerTest.csproj	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/MapViewerTest/MapViewerTest.csproj	2025-02-06 02:59:26 UTC (rev 10118)
@@ -1,259 +1,25 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project Sdk="Microsoft.NET.Sdk">
+
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{E2FC8B99-0638-4C01-86C4-1B625D966981}</ProjectGuid>
+    <TargetFramework>net6.0-windows</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <UseWindowsForms>true</UseWindowsForms>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
     <OutputType>WinExe</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>MapViewerTest</RootNamespace>
-    <AssemblyName>MapViewerTest</AssemblyName>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
   </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>..\bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <Prefer32Bit>false</Prefer32Bit>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+    <NoWarn>1701;1702;CA1416</NoWarn>
   </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <OutputPath>..\bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <ErrorReport>prompt</ErrorReport>
-    <Prefer32Bit>false</Prefer32Bit>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+    <NoWarn>1701;1702;CA1416</NoWarn>
   </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>..\bin\Debug64\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
-    <OutputPath>..\bin\Release64\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <ErrorReport>prompt</ErrorReport>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
+
   <ItemGroup>
-    <Reference Include="OSGeo.MapGuide.Desktop, Version=2.4.0.0, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f, processorArchitecture=AMD64">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.Desktop.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="OSGeo.MapGuide.Foundation, Version=1.0.0.1, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.Foundation.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="OSGeo.MapGuide.Geometry, Version=1.0.0.1, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.Geometry.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="OSGeo.MapGuide.PlatformBase, Version=1.0.0.1, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.PlatformBase.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Deployment" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
+    <ProjectReference Include="..\..\Bindings\src\Managed\DotNet\OSGeo.MapGuide.Portable\OSGeo.MapGuide.Portable.csproj" />
+    <ProjectReference Include="..\OSGeo.MapGuide.Viewer\OSGeo.MapGuide.Viewer.csproj" />
+    <ProjectReference Include="..\OSGeo.MapGuide.Viewer.Portable\OSGeo.MapGuide.Viewer.Portable.csproj" />
   </ItemGroup>
-  <ItemGroup>
-    <Compile Include="CompactViewer.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="CompactViewer.Designer.cs">
-      <DependentUpon>CompactViewer.cs</DependentUpon>
-    </Compile>
-    <Compile Include="MgAppWindow.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="MgAppWindow.Designer.cs">
-      <DependentUpon>MgAppWindow.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Program.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <EmbeddedResource Include="CompactViewer.resx">
-      <DependentUpon>CompactViewer.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MgAppWindow.resx">
-      <DependentUpon>MgAppWindow.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Properties\Resources.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ResourceIdDialog.resx">
-      <DependentUpon>ResourceIdDialog.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="XmlResponseDialog.resx">
-      <DependentUpon>XmlResponseDialog.cs</DependentUpon>
-    </EmbeddedResource>
-    <Compile Include="Properties\Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DependentUpon>Resources.resx</DependentUpon>
-      <DesignTime>True</DesignTime>
-    </Compile>
-    <None Include="app.config" />
-    <None Include="Properties\Settings.settings">
-      <Generator>SettingsSingleFileGenerator</Generator>
-      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
-    </None>
-    <Compile Include="Properties\Settings.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DependentUpon>Settings.settings</DependentUpon>
-      <DesignTimeSharedInput>True</DesignTimeSharedInput>
-    </Compile>
-    <Compile Include="ResourceIdDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="ResourceIdDialog.Designer.cs">
-      <DependentUpon>ResourceIdDialog.cs</DependentUpon>
-    </Compile>
-    <Compile Include="XmlResponseDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="XmlResponseDialog.Designer.cs">
-      <DependentUpon>XmlResponseDialog.cs</DependentUpon>
-    </Compile>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\icon_refreshmap.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\icon_pan.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\icon_refreshmap1.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\icon_zoomin.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\icon_zoomout.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\icon_fitwindow.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\icon_loading.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\icon_clearselect.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\icon_select.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\PoweredBy_en.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\layer-shape.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\layer-shape-ellipse.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\layer-shape-line.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\layer-shape-polygon.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\layer-shape-polyline.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\layer-small.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\DebugLayer.txt" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\ui-tooltip-balloon-bottom.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\lc_dwf.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
-      <Visible>False</Visible>
-      <ProductName>Windows Installer 3.1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\MapViewer.Desktop\MapViewer.Desktop.csproj">
-      <Project>{E2001B46-F226-4F7B-911E-252B9644236E}</Project>
-      <Name>MapViewer.Desktop.Net40</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\MapViewer\MapViewer.csproj">
-      <Project>{D46ED17B-329B-4D80-9181-FEF8307EFCBB}</Project>
-      <Name>MapViewer.Net40</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="Resources\icon_home.gif" />
-    <Content Include="Resources\icon_tasks.gif" />
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\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>
\ No newline at end of file
+
+</Project>

Modified: branches/4.0/MgDev/Portable/MapViewerTest/MgAppWindow.cs
===================================================================
--- branches/4.0/MgDev/Portable/MapViewerTest/MgAppWindow.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/MapViewerTest/MgAppWindow.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -87,12 +87,12 @@
                     save.Filter = "DWF Files (*.dwf)|*.dwf";
                     if (save.ShowDialog() == DialogResult.OK)
                     {
-                        var mappingSvc = (MgdMappingService)mapViewer.GetProvider().CreateService(MgServiceType.MappingService);
-                        var map = (MgdMap)mapViewer.GetMap();
-                        var dwfVer = new MgdDwfVersion("6.01", "1.2");
+                        var mappingSvc = (MgPortableMappingService)mapViewer.GetProvider().CreateService(MgServiceType.MappingService);
+                        var map = (MgPortableMap)mapViewer.GetMap();
+                        var dwfVer = new MgPortableDwfVersion("6.01", "1.2");
 
-                        var layout = new MgdLayout(layoutId, "TestPlot", MgdPageUnitsType.Inches);
-                        var plotSpec = new MgdPlotSpecification(8.5f, 11.0f, MgdPageUnitsType.Inches, 0.5f, 0.5f, 0.5f, 0.5f);
+                        var layout = new MgPortableLayout(layoutId, "TestPlot", MgPortablePageUnitsType.Inches);
+                        var plotSpec = new MgPortablePlotSpecification(8.5f, 11.0f, MgPortablePageUnitsType.Inches, 0.5f, 0.5f, 0.5f, 0.5f);
 
                         var result = mappingSvc.GeneratePlot(map, plotSpec, layout, dwfVer);
                         var sink = new MgByteSink(result);
@@ -125,9 +125,9 @@
         {
             var provider = mapViewer.GetProvider();
             var map = mapViewer.GetMap();
-            var prof = (MgdProfilingService)provider.CreateService(MgServiceType.ProfilingService);
-            var opts = new MgdRenderingOptions("PNG", 2, new MgColor(mapViewer.SelectionColor));
-            var result = prof.ProfileRenderDynamicOverlay((MgdMap)map, (MgdSelection)mapViewer.GetSelection(), opts); 
+            var prof = (MgPortableProfilingService)provider.CreateService(MgServiceType.ProfilingService);
+            var opts = new MgPortableRenderingOptions("PNG", 2, new MgColor(mapViewer.SelectionColor));
+            var result = prof.ProfileRenderDynamicOverlay((MgPortableMap)map, (MgPortableSelection)mapViewer.GetSelection(), opts); 
  	        new XmlResponseDialog(result).ShowDialog(); 
         }
 

Modified: branches/4.0/MgDev/Portable/MapViewerTest/Program.cs
===================================================================
--- branches/4.0/MgDev/Portable/MapViewerTest/Program.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/MapViewerTest/Program.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -1,10 +1,6 @@
-using System;
-using System.Collections.Generic;
-using System.Windows.Forms;
-using OSGeo.MapGuide;
+using OSGeo.MapGuide;
+using OSGeo.MapGuide.Viewer.Portable;
 using System.Diagnostics;
-using OSGeo.MapGuide.Viewer;
-using OSGeo.MapGuide.Viewer.Desktop;
 
 namespace MapViewerTest
 {
@@ -25,7 +21,7 @@
             {
                 var sw = new Stopwatch();
                 sw.Start();
-                MgdPlatform.Initialize("Platform.ini");
+                MgPortablePlatform.Initialize("Platform.ini");
                 sw.Stop();
                 Trace.TraceInformation("Platform initialization took {0}ms", sw.ElapsedMilliseconds);
             }
@@ -52,12 +48,12 @@
                 resId.Validate();
             }
 
-            var fact = new MgdServiceFactory();
-            var resSvc = (MgdResourceService)fact.CreateService(MgServiceType.ResourceService);
-            MgdMap map = null;
+            var fact = new MgPortableServiceFactory();
+            var resSvc = (MgPortableResourceService)fact.CreateService(MgServiceType.ResourceService);
+            MgPortableMap map = null;
 
             if (resId != null && resSvc.ResourceExists(resId))
-                map = new MgdMap(resId);
+                map = new MgPortableMap(resId);
 
             //This is just a pass-through call to MgMapViewer.Init()
             frm.LoadMap(new MgPortableMapViewerProvider(map));
@@ -68,7 +64,7 @@
 
         static void OnAppExit(object sender, EventArgs e)
         {
-            MgdPlatform.Terminate();
+            MgPortablePlatform.Terminate();
         }
 
         static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)

Modified: branches/4.0/MgDev/Portable/MapViewerTest/ResourceIdDialog.cs
===================================================================
--- branches/4.0/MgDev/Portable/MapViewerTest/ResourceIdDialog.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/MapViewerTest/ResourceIdDialog.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -30,7 +30,7 @@
                 var resId = new MgResourceIdentifier(txtResourceId.Text);
                 resId.Validate();
 
-                var fact = new MgdServiceFactory();
+                var fact = new MgPortableServiceFactory();
                 var resSvc = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
                 if (!resSvc.ResourceExists(resId))
                 {

Modified: branches/4.0/MgDev/Portable/MgAppLayout/MgAppLayout.csproj
===================================================================
--- branches/4.0/MgDev/Portable/MgAppLayout/MgAppLayout.csproj	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/MgAppLayout/MgAppLayout.csproj	2025-02-06 02:59:26 UTC (rev 10118)
@@ -1,137 +1,25 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project Sdk="Microsoft.NET.Sdk">
+
   <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
-    <ProductVersion>8.0.30703</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{F6054D81-E857-49FB-945F-AC2ECD9BB27A}</ProjectGuid>
+    <TargetFramework>net6.0-windows</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <UseWindowsForms>true</UseWindowsForms>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
     <OutputType>WinExe</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>MgAppLayout</RootNamespace>
-    <AssemblyName>MgAppLayout</AssemblyName>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
-    <FileAlignment>512</FileAlignment>
   </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
-    <PlatformTarget>x86</PlatformTarget>
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <Prefer32Bit>false</Prefer32Bit>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+    <NoWarn>1701;1702;CA1416</NoWarn>
   </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <PlatformTarget>x86</PlatformTarget>
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>..\bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <Prefer32Bit>false</Prefer32Bit>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+    <NoWarn>1701;1702;CA1416</NoWarn>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x64\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
-    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
-    <Prefer32Bit>false</Prefer32Bit>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
-    <OutputPath>..\bin\Release64\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
-    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
-    <Prefer32Bit>false</Prefer32Bit>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-  </PropertyGroup>
+
   <ItemGroup>
-    <Reference Include="OSGeo.MapGuide.Desktop">
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.Desktop.dll</HintPath>
-    </Reference>
-    <Reference Include="OSGeo.MapGuide.Foundation">
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.Foundation.dll</HintPath>
-    </Reference>
-    <Reference Include="OSGeo.MapGuide.Geometry">
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.Geometry.dll</HintPath>
-    </Reference>
-    <Reference Include="OSGeo.MapGuide.PlatformBase">
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.PlatformBase.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Data.DataSetExtensions" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Deployment" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
+    <ProjectReference Include="..\..\Bindings\src\Managed\DotNet\OSGeo.MapGuide.Portable\OSGeo.MapGuide.Portable.csproj" />
+    <ProjectReference Include="..\OSGeo.MapGuide.Viewer\OSGeo.MapGuide.Viewer.csproj" />
+    <ProjectReference Include="..\OSGeo.MapGuide.Viewer.Portable\OSGeo.MapGuide.Viewer.Portable.csproj" />
   </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Program.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <EmbeddedResource Include="Properties\Resources.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <Compile Include="Properties\Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DependentUpon>Resources.resx</DependentUpon>
-      <DesignTime>True</DesignTime>
-    </Compile>
-    <None Include="app.config" />
-    <None Include="Properties\Settings.settings">
-      <Generator>SettingsSingleFileGenerator</Generator>
-      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
-    </None>
-    <Compile Include="Properties\Settings.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DependentUpon>Settings.settings</DependentUpon>
-      <DesignTimeSharedInput>True</DesignTimeSharedInput>
-    </Compile>
-    <None Include="Sheboygan.AppLayout">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-      <SubType>Designer</SubType>
-    </None>
-    <None Include="SheboyganTiled.AppLayout">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\MapViewer.Desktop\MapViewer.Desktop.csproj">
-      <Project>{E2001B46-F226-4F7B-911E-252B9644236E}</Project>
-      <Name>MapViewer.Desktop.Net40</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\MapViewer\MapViewer.csproj">
-      <Project>{D46ED17B-329B-4D80-9181-FEF8307EFCBB}</Project>
-      <Name>MapViewer.Net40</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\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>
\ No newline at end of file
+
+</Project>

Modified: branches/4.0/MgDev/Portable/MgAppLayout/Program.cs
===================================================================
--- branches/4.0/MgDev/Portable/MgAppLayout/Program.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/MgAppLayout/Program.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -1,13 +1,9 @@
 //#define PROFILE
-using System;
-using System.Collections.Generic;
-using System.Windows.Forms;
 using OSGeo.MapGuide;
 using OSGeo.MapGuide.Viewer.AppLayoutEngine;
+using OSGeo.MapGuide.Viewer.Portable;
+using System.Diagnostics;
 using System.Xml.Serialization;
-using System.IO;
-using OSGeo.MapGuide.Viewer.Desktop;
-using System.Diagnostics;
 
 namespace MgAppLayout
 {
@@ -22,17 +18,17 @@
             Application.EnableVisualStyles();
             Application.SetCompatibleTextRenderingDefault(false);
             Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
-            
-            //Must call MgPlatform.Initialize() before we can work with anything from the MapGuide API
+
+            //Must call MgPortablePlatform.Initialize() before we can work with anything from the MapGuide API
             try
             {
 #if PROFILE
-                using (new CallMeasure("MgdPlatform.Initialize"))
+                using (new CallMeasure("MgPortablePlatform.Initialize"))
                 {
-                    MgdPlatform.Initialize("Platform.ini");
+                    MgPortablePlatform.Initialize("Platform.ini");
                 }
 #else
-                MgdPlatform.Initialize("Platform.ini");
+                MgPortablePlatform.Initialize("Platform.ini");
 #endif
             }
             catch (Exception ex)
@@ -66,14 +62,14 @@
             if (resSvc.ResourceExists(mdfId))
             {
 #if PROFILE
-                using (new CallMeasure("MgdMap constructor (cold start)"))
+                using (new CallMeasure("MgPortableMap constructor (cold start)"))
                 {
-                    var mapCold = new MgdMap(mdfId);
+                    var mapCold = new MgPortableMap(mdfId);
                 }
-                MgdMap map = null;
-                using (new CallMeasure("MgdMap constructor (warm start)"))
+                MgPortableMap map = null;
+                using (new CallMeasure("MgPortableMap constructor (warm start)"))
                 {
-                    map = new MgdMap(mdfId);
+                    map = new MgPortableMap(mdfId);
                 }
                 using (new CallMeasure("MgMapViewerProvider.LoadMap"))
                 {
@@ -80,13 +76,13 @@
                     provider.LoadMap(map);
                 }
 #else
-                provider.LoadMap(new MgdMap(mdfId));
+                provider.LoadMap(new MgPortableMap(mdfId));
 #endif
             }
             var frm = Shell.Instance;
             ((Shell)frm).Initialize(layout, provider);
             Application.Run((Shell)frm);
-            MgdPlatform.Terminate();
+            MgPortablePlatform.Terminate();
         }
 
         static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)

Deleted: branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer/MapViewer.csproj
===================================================================
--- branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer/MapViewer.csproj	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer/MapViewer.csproj	2025-02-06 02:59:26 UTC (rev 10118)
@@ -1,578 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{D46ED17B-329B-4D80-9181-FEF8307EFCBB}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>OSGeo.MapGuide.Viewer</RootNamespace>
-    <AssemblyName>OSGeo.MapGuide.Viewer</AssemblyName>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <SignAssembly>false</SignAssembly>
-    <AssemblyOriginatorKeyFile>
-    </AssemblyOriginatorKeyFile>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-  </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>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>
-    </DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>bin\Release\OSGeo.MapGuide.Viewer.XML</DocumentationFile>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="OSGeo.MapGuide.Foundation, Version=1.0.0.1, Culture=neutral, processorArchitecture=x86">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.Foundation.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="OSGeo.MapGuide.Geometry, Version=1.0.0.1, Culture=neutral, processorArchitecture=x86">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.Geometry.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="OSGeo.MapGuide.PlatformBase, Version=1.0.0.1, Culture=neutral, processorArchitecture=x86">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.PlatformBase.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="AppLayoutEngine\AppLayout.cs" />
-    <Compile Include="AppLayoutEngine\MgQuitComponent.cs">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="AppLayoutEngine\Shell.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="AppLayoutEngine\Shell.Designer.cs">
-      <DependentUpon>Shell.cs</DependentUpon>
-    </Compile>
-    <Compile Include="BaseInteractionComponents.cs">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="Debug.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>Debug.resx</DependentUpon>
-    </Compile>
-    <Compile Include="IDefaultToolbar.cs" />
-    <Compile Include="IMapLegend.cs" />
-    <Compile Include="IMapViewer.cs" />
-    <Compile Include="IMapViewerComponent.cs" />
-    <Compile Include="IMapStatusBar.cs" />
-    <Compile Include="IPropertyPane.cs" />
-    <Compile Include="MgBufferComponent.cs">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="MgBufferControlImpl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="MgBufferControlImpl.Designer.cs">
-      <DependentUpon>MgBufferControlImpl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="MgComponent.cs">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="MgControlImpl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="MgDefaultToolbar.cs">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="MgGenericInvokeComponent.cs">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="MgInvokeComponent.cs">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="MgLayerSelectionHandler.cs">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="MgLegendControlPresenter.cs" />
-    <Compile Include="MgLineMeasureControlImpl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="MgLineMeasureControlImpl.Designer.cs">
-      <DependentUpon>MgLineMeasureControlImpl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="MgLoadMapComponent.cs">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="MgLoadPackageComponent.cs">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="MgMapViewer.cs">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="MapViewerController.cs" />
-    <Compile Include="MgLegend.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="MgLegend.Designer.cs">
-      <DependentUpon>MgLegend.cs</DependentUpon>
-    </Compile>
-    <Compile Include="MgMapViewerProvider.cs" />
-    <Compile Include="MgMeasureComponent.cs">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="MgPrintComponent.cs">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="MgPrintControlImpl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="MgPrintControlImpl.Designer.cs">
-      <DependentUpon>MgPrintControlImpl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="MgPropertyPane.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="MgPropertyPane.Designer.cs">
-      <DependentUpon>MgPropertyPane.cs</DependentUpon>
-    </Compile>
-    <Compile Include="MgQueryComponent.cs">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="MgQueryControlImpl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="MgQueryControlImpl.Designer.cs">
-      <DependentUpon>MgQueryControlImpl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="MgQueryResultsDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="MgQueryResultsDialog.Designer.cs">
-      <DependentUpon>MgQueryResultsDialog.cs</DependentUpon>
-    </Compile>
-    <Compile Include="MgReadOnlyStream.cs" />
-    <Compile Include="MgRedlineComponent.cs">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="MgRedlineComponent.Designer.cs">
-      <DependentUpon>MgRedlineComponent.cs</DependentUpon>
-    </Compile>
-    <Compile Include="MgRedlineControlImpl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="MgRedlineControlImpl.Designer.cs">
-      <DependentUpon>MgRedlineControlImpl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="MgSearchComponent.cs">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="MgSearchControlImpl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="MgSearchControlImpl.Designer.cs">
-      <DependentUpon>MgSearchControlImpl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="MgTaskPane.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="MgTaskPane.Designer.cs">
-      <DependentUpon>MgTaskPane.cs</DependentUpon>
-    </Compile>
-    <Compile Include="MgThemeComponent.cs">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="MgThemeControlImpl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="MgThemeControlImpl.Designer.cs">
-      <DependentUpon>MgThemeControlImpl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="MgTransientMapState.cs" />
-    <Compile Include="MgViewerOptionsComponent.cs">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="MgViewerOptionsControlImpl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="MgViewerOptionsControlImpl.Designer.cs">
-      <DependentUpon>MgViewerOptionsControlImpl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Properties\Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>Resources.resx</DependentUpon>
-    </Compile>
-    <Compile Include="Redlining\NewRedlineLayerDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="Redlining\NewRedlineLayerDialog.Designer.cs">
-      <DependentUpon>NewRedlineLayerDialog.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Redlining\RedlineEditingCtrl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Redlining\RedlineEditingCtrl.Designer.cs">
-      <DependentUpon>RedlineEditingCtrl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Redlining\RedlineEditor.cs" />
-    <Compile Include="Redlining\RedlineMainCtrl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Redlining\RedlineMainCtrl.Designer.cs">
-      <DependentUpon>RedlineMainCtrl.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Redlining\RedlineManager.cs" />
-    <Compile Include="Redlining\RedlineRegistry.cs" />
-    <Compile Include="Redlining\RedlineSchemaFactory.cs" />
-    <Compile Include="Redlining\RedlineStyleDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="Redlining\RedlineStyleDialog.Designer.cs">
-      <DependentUpon>RedlineStyleDialog.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Redlining\TextPrompt.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="Redlining\TextPrompt.Designer.cs">
-      <DependentUpon>TextPrompt.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Strings.Designer.cs" />
-    <Compile Include="Tasks\MgTaskPaneStub.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Tasks\MgTaskPaneStub.Designer.cs">
-      <DependentUpon>MgTaskPaneStub.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Util.cs" />
-    <Service Include="{94E38DFF-614B-4cbd-B67C-F211BB35CE8B}" />
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="AppLayoutEngine\Shell.resx">
-      <DependentUpon>Shell.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Debug.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Debug.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MgBufferControlImpl.resx">
-      <DependentUpon>MgBufferControlImpl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MgLegend.resx">
-      <DependentUpon>MgLegend.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MgLineMeasureControlImpl.resx">
-      <DependentUpon>MgLineMeasureControlImpl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MgPrintControlImpl.resx">
-      <DependentUpon>MgPrintControlImpl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MgPropertyPane.resx">
-      <DependentUpon>MgPropertyPane.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MgQueryControlImpl.resx">
-      <DependentUpon>MgQueryControlImpl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MgQueryResultsDialog.resx">
-      <DependentUpon>MgQueryResultsDialog.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MgRedlineControlImpl.resx">
-      <DependentUpon>MgRedlineControlImpl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MgSearchControlImpl.resx">
-      <DependentUpon>MgSearchControlImpl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MgTaskPane.resx">
-      <DependentUpon>MgTaskPane.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MgThemeControlImpl.resx">
-      <DependentUpon>MgThemeControlImpl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MgViewerOptionsControlImpl.resx">
-      <DependentUpon>MgViewerOptionsControlImpl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Properties\Resources.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Redlining\NewRedlineLayerDialog.resx">
-      <DependentUpon>NewRedlineLayerDialog.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Redlining\RedlineEditingCtrl.resx">
-      <DependentUpon>RedlineEditingCtrl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Redlining\RedlineMainCtrl.resx">
-      <DependentUpon>RedlineMainCtrl.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Redlining\RedlineStyleDialog.resx">
-      <DependentUpon>RedlineStyleDialog.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Redlining\TextPrompt.resx">
-      <DependentUpon>TextPrompt.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Strings.resx" />
-    <EmbeddedResource Include="Tasks\MgTaskPaneStub.resx">
-      <DependentUpon>MgTaskPaneStub.cs</DependentUpon>
-    </EmbeddedResource>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\lc_broken.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\lc_dwf.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\lc_group.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\lc_raster.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\lc_select.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\lc_theme.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\lc_unselect.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\DebugLayer.txt" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\zoomin.cur" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\grab.cur" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\icon_zoomselect.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\zoomout.cur" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\control.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\control-180.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\icon_loading.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\icon_pan.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\icon_select.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\layer-shape.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\layer-shape-ellipse.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\layer-shape-line.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\layer-shape-polygon.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\layer-shape-polyline.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\layer-small.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\PoweredBy_en.gif" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\ui-tooltip-balloon-bottom.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\buffer.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\select-clear.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\select-features.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\select-polygon.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\select-radius.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\select-zoom.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\view-refresh.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\zoom-in-fixed.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\measure.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\zoom-out-fixed.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\zoom-full.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\edit-copy.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\about.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\edit-cut.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\edit-duplicate.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\edit-paste.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\edit-xml.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\error.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\file-print.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\file-save.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\help.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\iconNavigator.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\info.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\initial-center.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\invoke-script.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\invoke-url.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\options.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\overview-map.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\preview.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\print.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\search.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\select-centre.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\view-back.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\view-forward.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\zoom-dynamic.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\zoom-in.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\icon_etc.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
-      <Visible>False</Visible>
-      <ProductName>Windows Installer 3.1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\AreaLayerDef.txt" />
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="Resources\icon_home.gif" />
-    <Content Include="Resources\icon_tasks.gif" />
-    <Content Include="Resources\load_package.gif" />
-    <Content Include="Resources\monitor_status.gif" />
-    <Content Include="Resources\view_log.gif" />
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\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>
\ No newline at end of file

Modified: branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer/MgMapViewer.cs
===================================================================
--- branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer/MgMapViewer.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer/MgMapViewer.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -1,18 +1,6 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Windows.Forms;
-using OSGeo.MapGuide;
-using System.Drawing;
+using System.Collections.ObjectModel;
 using System.ComponentModel;
-using System.IO;
-using System.Drawing.Drawing2D;
 using System.Diagnostics;
-using System.Threading;
-using System.Xml;
-using System.Collections.Specialized;
-using System.Collections.ObjectModel;
-using System.Globalization;
 using System.Reflection;
 
 #pragma warning disable 1591

Added: branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer/OSGeo.MapGuide.Viewer.csproj
===================================================================
--- branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer/OSGeo.MapGuide.Viewer.csproj	                        (rev 0)
+++ branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer/OSGeo.MapGuide.Viewer.csproj	2025-02-06 02:59:26 UTC (rev 10118)
@@ -0,0 +1,35 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0-windows</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <DebugType>portable</DebugType>
+	<UseWindowsForms>true</UseWindowsForms>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <PackageProjectUrl>https://mapguide.osgeo.org/</PackageProjectUrl>
+    <RepositoryUrl>https://mapguide.osgeo.org/</RepositoryUrl>
+    <PackageIconUrl>https://mapguide.osgeo.org/</PackageIconUrl>
+    <PackageTags>MapGuide GIS Geospatial Maps</PackageTags>
+    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+    <NoWarn>1701;1702;CA1416</NoWarn>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+    <NoWarn>1701;1702;CA1416</NoWarn>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="System.Drawing.Common" Version="6.0.0" />
+    <PackageReference Include="System.Resources.Extensions" Version="6.0.0" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\..\Bindings\src\Managed\DotNet\OSGeo.MapGuide.Foundation\OSGeo.MapGuide.Foundation.csproj" />
+    <ProjectReference Include="..\..\Bindings\src\Managed\DotNet\OSGeo.MapGuide.Geometry\OSGeo.MapGuide.Geometry.csproj" />
+    <ProjectReference Include="..\..\Bindings\src\Managed\DotNet\OSGeo.MapGuide.PlatformBase\OSGeo.MapGuide.PlatformBase.csproj" />
+  </ItemGroup>
+
+</Project>

Deleted: branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MapViewer.Desktop.csproj
===================================================================
--- branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MapViewer.Desktop.csproj	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MapViewer.Desktop.csproj	2025-02-06 02:59:26 UTC (rev 10118)
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{E2001B46-F226-4F7B-911E-252B9644236E}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>OSGeo.MapGuide.Viewer.Desktop</RootNamespace>
-    <AssemblyName>OSGeo.MapGuide.Viewer.Desktop</AssemblyName>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-  </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>
-    <Prefer32Bit>false</Prefer32Bit>
-  </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>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="OSGeo.MapGuide.Desktop, Version=2.4.0.0, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f, processorArchitecture=AMD64">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.Desktop.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="OSGeo.MapGuide.Foundation, Version=1.0.0.1, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.Foundation.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="OSGeo.MapGuide.Geometry, Version=1.0.0.1, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.Geometry.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="OSGeo.MapGuide.PlatformBase, Version=1.0.0.1, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.PlatformBase.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="MgPortableMapViewerProvider.cs" />
-    <Compile Include="MgdTransientMapState.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Strings.Designer.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
-      <Visible>False</Visible>
-      <ProductName>Windows Installer 3.1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\MapViewer\MapViewer.csproj">
-      <Project>{D46ED17B-329B-4D80-9181-FEF8307EFCBB}</Project>
-      <Name>MapViewer.Net40</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="Strings.resx" />
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\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>
\ No newline at end of file

Deleted: branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MgDesktopMapViewerProvider.cs
===================================================================
--- branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MgDesktopMapViewerProvider.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MgDesktopMapViewerProvider.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -1,180 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using OSGeo.MapGuide.Viewer;
-using OSGeo.MapGuide;
-
-namespace OSGeo.MapGuide.Viewer.Desktop
-{
-    public class MgPortableMapViewerProvider : MgMapViewerProvider
-    {
-        private MgdMap _implMap;
-        private MgdRenderingService _renderSvc;
-        private MgdMappingService _mappingSvc;
-        private MgdServiceFactory _fact;
-
-        public MgPortableMapViewerProvider(MgdMap map) : base(map) 
-        {
-            _implMap = map;
-        }
-
-        protected override void OnNewMapLoaded(MgMapBase map)
-        {
-            _implMap = (MgdMap)map;
-        }
-
-        protected override void SubInit()
-        {
-            _fact = new MgdServiceFactory();
-            _resSvc = (MgdResourceService)_fact.CreateService(MgServiceType.ResourceService);
-            _renderSvc = (MgdRenderingService)_fact.CreateService(MgServiceType.RenderingService);
-            _mappingSvc = (MgdMappingService)_fact.CreateService(MgServiceType.MappingService);
-        }
-        
-        private MgdRenderingOptions _lastRenderOpts;
-
-        private MgdRenderingOptions CreateRenderingOptions(MgViewerRenderingOptions renderOpts)
-        {
-            if (null == _lastRenderOpts)
-            {
-                _lastRenderOpts = new MgdRenderingOptions(renderOpts.Format, renderOpts.Behavior, renderOpts.Color);
-            }
-            else
-            {
-                var color = _lastRenderOpts.GetSelectionColor();
-                if (!(color.Red == renderOpts.Color.Red &&
-                    color.Green == renderOpts.Color.Green &&
-                    color.Blue == renderOpts.Color.Blue &&
-                    color.Alpha == renderOpts.Color.Alpha &&
-                    _lastRenderOpts.GetBehavior() == renderOpts.Behavior &&
-                    _lastRenderOpts.GetImageFormat() == renderOpts.Format))
-                {
-                    _lastRenderOpts = new MgdRenderingOptions(renderOpts.Format, renderOpts.Behavior, renderOpts.Color);
-                }
-            }
-            return _lastRenderOpts;
-        }
-
-        public override OSGeo.MapGuide.MgByteReader RenderDynamicOverlay(OSGeo.MapGuide.MgSelectionBase selection, MgViewerRenderingOptions args)
-        {
-            return _renderSvc.RenderDynamicOverlay(_implMap, selection as MgdSelection, CreateRenderingOptions(args));
-        }
-
-        public override void SetDisplaySize(int width, int height)
-        {
-            _implMap.SetDisplaySize(width, height);
-        }
-
-        public override OSGeo.MapGuide.MgSelectionBase CreateSelectionForMap()
-        {
-            return new MgdSelection(_implMap);
-        }
-
-        public override double GetMetersPerUnit()
-        {
-            return _implMap.GetMetersPerUnit();
-        }
-
-        public override void SetViewCenterXY(double x, double y)
-        {
-            _implMap.SetViewCenterXY(x, y);
-        }
-
-        public override void ClearSelection(OSGeo.MapGuide.MgSelectionBase sel)
-        {
-            var selImpl = sel as MgdSelection;
-            if (selImpl != null)
-                selImpl.Clear();
-        }
-
-        public override void SetViewScale(double scale)
-        {
-            _implMap.SetViewScale(scale);
-        }
-
-        public override void MakeGroupNormal(OSGeo.MapGuide.MgLayerGroup group)
-        {
-            _implMap.MakeGroupNormal(group);
-        }
-
-        public override MgService CreateService(int serviceType)
-        {
-            return _fact.CreateService(serviceType);
-        }
-
-        public override MgByteReader GenerateLegendImage(MgResourceIdentifier layerDefinition, double viewScale, int width, int height, string format, int geomType, int themeCategory)
-        {
-            return _mappingSvc.GenerateLegendImage(layerDefinition, viewScale, width, height, format, geomType, themeCategory);
-        }
-
-        public override void SetGroupExpandInLegend(MgLayerGroup group, bool bExpanded)
-        {
-            MgdMap.SetGroupExpandInLegend(group, bExpanded);
-        }
-
-        public override void SetLayerExpandInLegend(MgLayerBase layer, bool bExpanded)
-        {
-            MgdMap.SetLayerExpandInLegend(layer, bExpanded);
-        }
-
-        public override bool LayerHasTooltips(MgLayerBase layer)
-        {
-            var layerImpl = layer as MgdLayer;
-            if (layerImpl != null)
-                return layerImpl.HasTooltips();
-
-            throw new InvalidOperationException(string.Format(Strings.ErrorLayerIncorrectImpl, typeof(MgdLayer).FullName));
-        }
-
-        public override bool IsLayerPotentiallyVisibleAtScale(MgLayerBase layer, bool bConsiderParentGroupVisibility)
-        {
-            var layerImpl = layer as MgdLayer;
-            if (layerImpl != null)
-                return layerImpl.IsPotentiallyVisibleAtScale(_implMap.ViewScale, bConsiderParentGroupVisibility);
-
-            throw new InvalidOperationException(string.Format(Strings.ErrorLayerIncorrectImpl, typeof(MgdLayer).FullName));
-        }
-
-        public override MgLayerBase CreateLayer(MgResourceIdentifier layerDefId)
-        {
-            return new MgdLayer(layerDefId, _resSvc);
-        }
-
-        public override MgMapBase CreateMap(MgResourceIdentifier mapDefinitionId, string name)
-        {
-            var map = new MgdMap(mapDefinitionId, name);
-            return map;
-        }
-
-        protected override MgSpatialContextReader GetSpatialContexts(MgLayerBase layer, bool activeOnly)
-        {
-            return ((MgdLayer)layer).GetSpatialContexts(activeOnly);
-        }
-
-        public override MgTransientMapState CreateTransientState(MgMapBase map)
-        {
-            return new MgdTransientMapState((MgdMap)map);
-        }
-
-        public override MgByteReader RenderMap(MgSelectionBase selection, string format)
-        {
-            return _renderSvc.RenderMap(_implMap, (MgdSelection)selection, format);
-        }
-
-        public override MgQueryMapFeaturesResult QueryMapFeatures(MgQueryRequestType queryType, MgStringCollection layerNames, MgGeometry filterGeom, int selectionVariant, string featureFilter, int maxFeatures, int layerAttributeFilter)
-        {
-            var fi = _renderSvc.QueryFeatures(_implMap, layerNames, filterGeom, selectionVariant, featureFilter, maxFeatures, layerAttributeFilter);
-            try
-            {
-                if (queryType == MgQueryRequestType.Tooltip)
-                    return MakeTooltip(fi.GetTooltip());
-                else
-                    return MakeSelectionResult(fi.GetSelection());
-            }
-            finally
-            {
-                fi.Dispose();
-            }
-        }
-    }
-}

Copied: branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MgPortableMapViewerProvider.cs (from rev 10117, branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MgDesktopMapViewerProvider.cs)
===================================================================
--- branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MgPortableMapViewerProvider.cs	                        (rev 0)
+++ branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MgPortableMapViewerProvider.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -0,0 +1,174 @@
+namespace OSGeo.MapGuide.Viewer.Portable
+{
+    public class MgPortableMapViewerProvider : MgMapViewerProvider
+    {
+        private MgPortableMap _implMap;
+        private MgPortableRenderingService _renderSvc;
+        private MgPortableMappingService _mappingSvc;
+        private MgPortableServiceFactory _fact;
+
+        public MgPortableMapViewerProvider(MgPortableMap map) : base(map) 
+        {
+            _implMap = map;
+        }
+
+        protected override void OnNewMapLoaded(MgMapBase map)
+        {
+            _implMap = (MgPortableMap)map;
+        }
+
+        protected override void SubInit()
+        {
+            _fact = new MgPortableServiceFactory();
+            _resSvc = (MgPortableResourceService)_fact.CreateService(MgServiceType.ResourceService);
+            _renderSvc = (MgPortableRenderingService)_fact.CreateService(MgServiceType.RenderingService);
+            _mappingSvc = (MgPortableMappingService)_fact.CreateService(MgServiceType.MappingService);
+        }
+        
+        private MgPortableRenderingOptions _lastRenderOpts;
+
+        private MgPortableRenderingOptions CreateRenderingOptions(MgViewerRenderingOptions renderOpts)
+        {
+            if (null == _lastRenderOpts)
+            {
+                _lastRenderOpts = new MgPortableRenderingOptions(renderOpts.Format, renderOpts.Behavior, renderOpts.Color);
+            }
+            else
+            {
+                var color = _lastRenderOpts.GetSelectionColor();
+                if (!(color.Red == renderOpts.Color.Red &&
+                    color.Green == renderOpts.Color.Green &&
+                    color.Blue == renderOpts.Color.Blue &&
+                    color.Alpha == renderOpts.Color.Alpha &&
+                    _lastRenderOpts.GetBehavior() == renderOpts.Behavior &&
+                    _lastRenderOpts.GetImageFormat() == renderOpts.Format))
+                {
+                    _lastRenderOpts = new MgPortableRenderingOptions(renderOpts.Format, renderOpts.Behavior, renderOpts.Color);
+                }
+            }
+            return _lastRenderOpts;
+        }
+
+        public override OSGeo.MapGuide.MgByteReader RenderDynamicOverlay(OSGeo.MapGuide.MgSelectionBase selection, MgViewerRenderingOptions args)
+        {
+            return _renderSvc.RenderDynamicOverlay(_implMap, selection as MgPortableSelection, CreateRenderingOptions(args));
+        }
+
+        public override void SetDisplaySize(int width, int height)
+        {
+            _implMap.SetDisplaySize(width, height);
+        }
+
+        public override OSGeo.MapGuide.MgSelectionBase CreateSelectionForMap()
+        {
+            return new MgPortableSelection(_implMap);
+        }
+
+        public override double GetMetersPerUnit()
+        {
+            return _implMap.GetMetersPerUnit();
+        }
+
+        public override void SetViewCenterXY(double x, double y)
+        {
+            _implMap.SetViewCenterXY(x, y);
+        }
+
+        public override void ClearSelection(OSGeo.MapGuide.MgSelectionBase sel)
+        {
+            var selImpl = sel as MgPortableSelection;
+            if (selImpl != null)
+                selImpl.Clear();
+        }
+
+        public override void SetViewScale(double scale)
+        {
+            _implMap.SetViewScale(scale);
+        }
+
+        public override void MakeGroupNormal(OSGeo.MapGuide.MgLayerGroup group)
+        {
+            _implMap.MakeGroupNormal(group);
+        }
+
+        public override MgService CreateService(int serviceType)
+        {
+            return _fact.CreateService(serviceType);
+        }
+
+        public override MgByteReader GenerateLegendImage(MgResourceIdentifier layerDefinition, double viewScale, int width, int height, string format, int geomType, int themeCategory)
+        {
+            return _mappingSvc.GenerateLegendImage(layerDefinition, viewScale, width, height, format, geomType, themeCategory);
+        }
+
+        public override void SetGroupExpandInLegend(MgLayerGroup group, bool bExpanded)
+        {
+            MgPortableMap.SetGroupExpandInLegend(group, bExpanded);
+        }
+
+        public override void SetLayerExpandInLegend(MgLayerBase layer, bool bExpanded)
+        {
+            MgPortableMap.SetLayerExpandInLegend(layer, bExpanded);
+        }
+
+        public override bool LayerHasTooltips(MgLayerBase layer)
+        {
+            var layerImpl = layer as MgPortableLayer;
+            if (layerImpl != null)
+                return layerImpl.HasTooltips();
+
+            throw new InvalidOperationException(string.Format(Strings.ErrorLayerIncorrectImpl, typeof(MgPortableLayer).FullName));
+        }
+
+        public override bool IsLayerPotentiallyVisibleAtScale(MgLayerBase layer, bool bConsiderParentGroupVisibility)
+        {
+            var layerImpl = layer as MgPortableLayer;
+            if (layerImpl != null)
+                return layerImpl.IsPotentiallyVisibleAtScale(_implMap.ViewScale, bConsiderParentGroupVisibility);
+
+            throw new InvalidOperationException(string.Format(Strings.ErrorLayerIncorrectImpl, typeof(MgPortableLayer).FullName));
+        }
+
+        public override MgLayerBase CreateLayer(MgResourceIdentifier layerDefId)
+        {
+            return new MgPortableLayer(layerDefId, _resSvc);
+        }
+
+        public override MgMapBase CreateMap(MgResourceIdentifier mapDefinitionId, string name)
+        {
+            var map = new MgPortableMap(mapDefinitionId, name);
+            return map;
+        }
+
+        protected override MgSpatialContextReader GetSpatialContexts(MgLayerBase layer, bool activeOnly)
+        {
+            return ((MgPortableLayer)layer).GetSpatialContexts(activeOnly);
+        }
+
+        public override MgTransientMapState CreateTransientState(MgMapBase map)
+        {
+            return new MgPortableTransientMapState((MgPortableMap)map);
+        }
+
+        public override MgByteReader RenderMap(MgSelectionBase selection, string format)
+        {
+            return _renderSvc.RenderMap(_implMap, (MgPortableSelection)selection, format);
+        }
+
+        public override MgQueryMapFeaturesResult QueryMapFeatures(MgQueryRequestType queryType, MgStringCollection layerNames, MgGeometry filterGeom, int selectionVariant, string featureFilter, int maxFeatures, int layerAttributeFilter)
+        {
+            var fi = _renderSvc.QueryFeatures(_implMap, layerNames, filterGeom, selectionVariant, featureFilter, maxFeatures, layerAttributeFilter);
+            try
+            {
+                if (queryType == MgQueryRequestType.Tooltip)
+                    return MakeTooltip(fi.GetTooltip());
+                else
+                    return MakeSelectionResult(fi.GetSelection());
+            }
+            finally
+            {
+                fi.Dispose();
+            }
+        }
+    }
+}

Copied: branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MgPortableTransientMapState.cs (from rev 10117, branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MgdTransientMapState.cs)
===================================================================
--- branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MgPortableTransientMapState.cs	                        (rev 0)
+++ branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MgPortableTransientMapState.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -0,0 +1,33 @@
+namespace OSGeo.MapGuide.Viewer.Portable
+{
+    /// <summary>
+    /// Represents a stack of transient map states. This is used to manipulate the display parameters
+    /// of a <see cref="T:OSGeo.MapGuide.MgPortableMap"/> in a manner that can be undone upon disposal
+    /// of this stack, allowing your map to be used for <see cref="T:OSGeo.MapGuide.MgPortableRenderingService.RenderMap()"/>
+    /// calls without permanently altering state.
+    /// </summary>
+    public class MgPortableTransientMapState : MgTransientMapState<MgPortableMap>
+    {
+        internal MgPortableTransientMapState(MgPortableMap map) : base(map) { } 
+
+        protected override void ApplyViewCenter(double x, double y)
+        {
+            _map.SetViewCenterXY(x, y);
+        }
+
+        protected override void ApplyViewScale(double scale)
+        {
+            _map.SetViewScale(scale);
+        }
+
+        protected override void ApplyDisplaySize(int width, int height)
+        {
+            _map.SetDisplaySize(width, height);
+        }
+
+        protected override void ApplyDPI(int dpi)
+        {
+            _map.DisplayDpi = dpi;
+        }
+    }
+}

Deleted: branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MgdTransientMapState.cs
===================================================================
--- branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MgdTransientMapState.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/MgdTransientMapState.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -1,37 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace OSGeo.MapGuide.Viewer.Desktop
-{
-    /// <summary>
-    /// Represents a stack of transient map states. This is used to manipulate the display parameters
-    /// of a <see cref="T:OSGeo.MapGuide.MgdMap"/> in a manner that can be undone upon disposal
-    /// of this stack, allowing your map to be used for <see cref="T:OSGeo.MapGuide.MgdRenderingService.RenderMap()"/>
-    /// calls without permanently altering state.
-    /// </summary>
-    public class MgdTransientMapState : MgTransientMapState<MgdMap>
-    {
-        internal MgdTransientMapState(MgdMap map) : base(map) { } 
-
-        protected override void ApplyViewCenter(double x, double y)
-        {
-            _map.SetViewCenterXY(x, y);
-        }
-
-        protected override void ApplyViewScale(double scale)
-        {
-            _map.SetViewScale(scale);
-        }
-
-        protected override void ApplyDisplaySize(int width, int height)
-        {
-            _map.SetDisplaySize(width, height);
-        }
-
-        protected override void ApplyDPI(int dpi)
-        {
-            _map.DisplayDpi = dpi;
-        }
-    }
-}

Added: branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/OSGeo.MapGuide.Viewer.Portable.csproj
===================================================================
--- branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/OSGeo.MapGuide.Viewer.Portable.csproj	                        (rev 0)
+++ branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/OSGeo.MapGuide.Viewer.Portable.csproj	2025-02-06 02:59:26 UTC (rev 10118)
@@ -0,0 +1,20 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0-windows</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+	<DebugType>portable</DebugType>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <PackageProjectUrl>https://mapguide.osgeo.org/</PackageProjectUrl>
+    <RepositoryUrl>https://mapguide.osgeo.org/</RepositoryUrl>
+    <PackageIconUrl>https://mapguide.osgeo.org/</PackageIconUrl>
+    <PackageTags>MapGuide GIS Geospatial Maps</PackageTags>
+    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\..\Bindings\src\Managed\DotNet\OSGeo.MapGuide.Portable\OSGeo.MapGuide.Portable.csproj" />
+    <ProjectReference Include="..\OSGeo.MapGuide.Viewer\OSGeo.MapGuide.Viewer.csproj" />
+  </ItemGroup>
+
+</Project>

Modified: branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/Strings.Designer.cs
===================================================================
--- branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/Strings.Designer.cs	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/OSGeo.MapGuide.Viewer.Portable/Strings.Designer.cs	2025-02-06 02:59:26 UTC (rev 10118)
@@ -8,7 +8,7 @@
 // </auto-generated>
 //------------------------------------------------------------------------------
 
-namespace OSGeo.MapGuide.Viewer.Desktop {
+namespace OSGeo.MapGuide.Viewer.Portable {
     using System;
     
     

Modified: branches/4.0/MgDev/Portable/Portable.sln
===================================================================
--- branches/4.0/MgDev/Portable/Portable.sln	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/Portable.sln	2025-02-06 02:59:26 UTC (rev 10118)
@@ -107,198 +107,378 @@
 		{3BAE3F0E-8F3F-404B-B29B-5881C16BD33B} = {3BAE3F0E-8F3F-404B-B29B-5881C16BD33B}
 	EndProjectSection
 EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".net libraries and tests", ".net libraries and tests", "{6C1E7AB7-DF4B-49C4-A252-1EA8AC7BD18E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.Viewer", "OSGeo.MapGuide.Viewer\OSGeo.MapGuide.Viewer.csproj", "{437CEF18-B1B5-4B1F-808A-4D35B304A16D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSGeo.MapGuide.Viewer.Portable", "OSGeo.MapGuide.Viewer.Portable\OSGeo.MapGuide.Viewer.Portable.csproj", "{B6BAF40C-7BD6-481D-8939-DBE477DCCDA0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetHarness", "DotNetHarness\DotNetHarness.csproj", "{5253D101-4C65-44C3-9BFC-FD4E6EAD930F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetUnitTest", "DotNetUnitTest\DotNetUnitTest.csproj", "{EFDE704C-9B3E-4350-8E43-952FA13F57B9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MapViewerTest", "MapViewerTest\MapViewerTest.csproj", "{72804B1F-414C-4749-A86E-9ED5D884BB0F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MgAppLayout", "MgAppLayout\MgAppLayout.csproj", "{95FC1143-4F9C-4982-8EBC-405D7731EB68}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
 		Debug|Win32 = Debug|Win32
 		Debug|x64 = Debug|x64
+		Release|Any CPU = Release|Any CPU
 		Release|Win32 = Release|Win32
 		Release|x64 = Release|x64
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{A82ADC7D-4DA4-42F2-9BF6-DF5DCFB44425}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{A82ADC7D-4DA4-42F2-9BF6-DF5DCFB44425}.Debug|Any CPU.Build.0 = Debug|x64
 		{A82ADC7D-4DA4-42F2-9BF6-DF5DCFB44425}.Debug|Win32.ActiveCfg = Debug|Win32
 		{A82ADC7D-4DA4-42F2-9BF6-DF5DCFB44425}.Debug|Win32.Build.0 = Debug|Win32
 		{A82ADC7D-4DA4-42F2-9BF6-DF5DCFB44425}.Debug|x64.ActiveCfg = Debug|x64
 		{A82ADC7D-4DA4-42F2-9BF6-DF5DCFB44425}.Debug|x64.Build.0 = Debug|x64
+		{A82ADC7D-4DA4-42F2-9BF6-DF5DCFB44425}.Release|Any CPU.ActiveCfg = Release|x64
+		{A82ADC7D-4DA4-42F2-9BF6-DF5DCFB44425}.Release|Any CPU.Build.0 = Release|x64
 		{A82ADC7D-4DA4-42F2-9BF6-DF5DCFB44425}.Release|Win32.ActiveCfg = Release|Win32
 		{A82ADC7D-4DA4-42F2-9BF6-DF5DCFB44425}.Release|Win32.Build.0 = Release|Win32
 		{A82ADC7D-4DA4-42F2-9BF6-DF5DCFB44425}.Release|x64.ActiveCfg = Release|x64
 		{A82ADC7D-4DA4-42F2-9BF6-DF5DCFB44425}.Release|x64.Build.0 = Release|x64
+		{D954DAAC-E305-40CE-B3F3-C229A0BEF4F0}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{D954DAAC-E305-40CE-B3F3-C229A0BEF4F0}.Debug|Any CPU.Build.0 = Debug|x64
 		{D954DAAC-E305-40CE-B3F3-C229A0BEF4F0}.Debug|Win32.ActiveCfg = Debug|Win32
 		{D954DAAC-E305-40CE-B3F3-C229A0BEF4F0}.Debug|Win32.Build.0 = Debug|Win32
 		{D954DAAC-E305-40CE-B3F3-C229A0BEF4F0}.Debug|x64.ActiveCfg = Debug|x64
 		{D954DAAC-E305-40CE-B3F3-C229A0BEF4F0}.Debug|x64.Build.0 = Debug|x64
+		{D954DAAC-E305-40CE-B3F3-C229A0BEF4F0}.Release|Any CPU.ActiveCfg = Release|x64
+		{D954DAAC-E305-40CE-B3F3-C229A0BEF4F0}.Release|Any CPU.Build.0 = Release|x64
 		{D954DAAC-E305-40CE-B3F3-C229A0BEF4F0}.Release|Win32.ActiveCfg = Release|Win32
 		{D954DAAC-E305-40CE-B3F3-C229A0BEF4F0}.Release|Win32.Build.0 = Release|Win32
 		{D954DAAC-E305-40CE-B3F3-C229A0BEF4F0}.Release|x64.ActiveCfg = Release|x64
 		{D954DAAC-E305-40CE-B3F3-C229A0BEF4F0}.Release|x64.Build.0 = Release|x64
+		{F7334B1B-0EFA-47E3-8E66-DF158E61B7E4}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{F7334B1B-0EFA-47E3-8E66-DF158E61B7E4}.Debug|Any CPU.Build.0 = Debug|x64
 		{F7334B1B-0EFA-47E3-8E66-DF158E61B7E4}.Debug|Win32.ActiveCfg = Debug|Win32
 		{F7334B1B-0EFA-47E3-8E66-DF158E61B7E4}.Debug|Win32.Build.0 = Debug|Win32
 		{F7334B1B-0EFA-47E3-8E66-DF158E61B7E4}.Debug|x64.ActiveCfg = Debug|x64
 		{F7334B1B-0EFA-47E3-8E66-DF158E61B7E4}.Debug|x64.Build.0 = Debug|x64
+		{F7334B1B-0EFA-47E3-8E66-DF158E61B7E4}.Release|Any CPU.ActiveCfg = Release|x64
+		{F7334B1B-0EFA-47E3-8E66-DF158E61B7E4}.Release|Any CPU.Build.0 = Release|x64
 		{F7334B1B-0EFA-47E3-8E66-DF158E61B7E4}.Release|Win32.ActiveCfg = Release|Win32
 		{F7334B1B-0EFA-47E3-8E66-DF158E61B7E4}.Release|Win32.Build.0 = Release|Win32
 		{F7334B1B-0EFA-47E3-8E66-DF158E61B7E4}.Release|x64.ActiveCfg = Release|x64
 		{F7334B1B-0EFA-47E3-8E66-DF158E61B7E4}.Release|x64.Build.0 = Release|x64
+		{C50254F2-654A-48DE-AF5B-20605AEF8D10}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{C50254F2-654A-48DE-AF5B-20605AEF8D10}.Debug|Any CPU.Build.0 = Debug|x64
 		{C50254F2-654A-48DE-AF5B-20605AEF8D10}.Debug|Win32.ActiveCfg = Debug|Win32
 		{C50254F2-654A-48DE-AF5B-20605AEF8D10}.Debug|Win32.Build.0 = Debug|Win32
 		{C50254F2-654A-48DE-AF5B-20605AEF8D10}.Debug|x64.ActiveCfg = Debug|x64
 		{C50254F2-654A-48DE-AF5B-20605AEF8D10}.Debug|x64.Build.0 = Debug|x64
+		{C50254F2-654A-48DE-AF5B-20605AEF8D10}.Release|Any CPU.ActiveCfg = Release|x64
+		{C50254F2-654A-48DE-AF5B-20605AEF8D10}.Release|Any CPU.Build.0 = Release|x64
 		{C50254F2-654A-48DE-AF5B-20605AEF8D10}.Release|Win32.ActiveCfg = Release|Win32
 		{C50254F2-654A-48DE-AF5B-20605AEF8D10}.Release|Win32.Build.0 = Release|Win32
 		{C50254F2-654A-48DE-AF5B-20605AEF8D10}.Release|x64.ActiveCfg = Release|x64
 		{C50254F2-654A-48DE-AF5B-20605AEF8D10}.Release|x64.Build.0 = Release|x64
+		{85882748-DD71-4D2B-9E5A-03AF8C8D91B7}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{85882748-DD71-4D2B-9E5A-03AF8C8D91B7}.Debug|Any CPU.Build.0 = Debug|x64
 		{85882748-DD71-4D2B-9E5A-03AF8C8D91B7}.Debug|Win32.ActiveCfg = Debug|Win32
 		{85882748-DD71-4D2B-9E5A-03AF8C8D91B7}.Debug|Win32.Build.0 = Debug|Win32
 		{85882748-DD71-4D2B-9E5A-03AF8C8D91B7}.Debug|x64.ActiveCfg = Debug|x64
 		{85882748-DD71-4D2B-9E5A-03AF8C8D91B7}.Debug|x64.Build.0 = Debug|x64
+		{85882748-DD71-4D2B-9E5A-03AF8C8D91B7}.Release|Any CPU.ActiveCfg = Release|x64
+		{85882748-DD71-4D2B-9E5A-03AF8C8D91B7}.Release|Any CPU.Build.0 = Release|x64
 		{85882748-DD71-4D2B-9E5A-03AF8C8D91B7}.Release|Win32.ActiveCfg = Release|Win32
 		{85882748-DD71-4D2B-9E5A-03AF8C8D91B7}.Release|Win32.Build.0 = Release|Win32
 		{85882748-DD71-4D2B-9E5A-03AF8C8D91B7}.Release|x64.ActiveCfg = Release|x64
 		{85882748-DD71-4D2B-9E5A-03AF8C8D91B7}.Release|x64.Build.0 = Release|x64
+		{38161685-88ED-415E-A545-CCC17BE069AE}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{38161685-88ED-415E-A545-CCC17BE069AE}.Debug|Any CPU.Build.0 = Debug|x64
 		{38161685-88ED-415E-A545-CCC17BE069AE}.Debug|Win32.ActiveCfg = Debug|Win32
 		{38161685-88ED-415E-A545-CCC17BE069AE}.Debug|Win32.Build.0 = Debug|Win32
 		{38161685-88ED-415E-A545-CCC17BE069AE}.Debug|x64.ActiveCfg = Debug|x64
 		{38161685-88ED-415E-A545-CCC17BE069AE}.Debug|x64.Build.0 = Debug|x64
+		{38161685-88ED-415E-A545-CCC17BE069AE}.Release|Any CPU.ActiveCfg = Release|x64
+		{38161685-88ED-415E-A545-CCC17BE069AE}.Release|Any CPU.Build.0 = Release|x64
 		{38161685-88ED-415E-A545-CCC17BE069AE}.Release|Win32.ActiveCfg = Release|Win32
 		{38161685-88ED-415E-A545-CCC17BE069AE}.Release|Win32.Build.0 = Release|Win32
 		{38161685-88ED-415E-A545-CCC17BE069AE}.Release|x64.ActiveCfg = Release|x64
 		{38161685-88ED-415E-A545-CCC17BE069AE}.Release|x64.Build.0 = Release|x64
+		{341D5463-186E-49BA-B942-3D3BE28D65C0}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{341D5463-186E-49BA-B942-3D3BE28D65C0}.Debug|Any CPU.Build.0 = Debug|x64
 		{341D5463-186E-49BA-B942-3D3BE28D65C0}.Debug|Win32.ActiveCfg = Debug|Win32
 		{341D5463-186E-49BA-B942-3D3BE28D65C0}.Debug|Win32.Build.0 = Debug|Win32
 		{341D5463-186E-49BA-B942-3D3BE28D65C0}.Debug|x64.ActiveCfg = Debug|x64
 		{341D5463-186E-49BA-B942-3D3BE28D65C0}.Debug|x64.Build.0 = Debug|x64
+		{341D5463-186E-49BA-B942-3D3BE28D65C0}.Release|Any CPU.ActiveCfg = Release|x64
+		{341D5463-186E-49BA-B942-3D3BE28D65C0}.Release|Any CPU.Build.0 = Release|x64
 		{341D5463-186E-49BA-B942-3D3BE28D65C0}.Release|Win32.ActiveCfg = Release|Win32
 		{341D5463-186E-49BA-B942-3D3BE28D65C0}.Release|Win32.Build.0 = Release|Win32
 		{341D5463-186E-49BA-B942-3D3BE28D65C0}.Release|x64.ActiveCfg = Release|x64
 		{341D5463-186E-49BA-B942-3D3BE28D65C0}.Release|x64.Build.0 = Release|x64
+		{DB2CC2E3-4754-4932-B865-424A44E58FD0}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{DB2CC2E3-4754-4932-B865-424A44E58FD0}.Debug|Any CPU.Build.0 = Debug|x64
 		{DB2CC2E3-4754-4932-B865-424A44E58FD0}.Debug|Win32.ActiveCfg = Debug|Win32
 		{DB2CC2E3-4754-4932-B865-424A44E58FD0}.Debug|Win32.Build.0 = Debug|Win32
 		{DB2CC2E3-4754-4932-B865-424A44E58FD0}.Debug|x64.ActiveCfg = Debug|x64
 		{DB2CC2E3-4754-4932-B865-424A44E58FD0}.Debug|x64.Build.0 = Debug|x64
+		{DB2CC2E3-4754-4932-B865-424A44E58FD0}.Release|Any CPU.ActiveCfg = Release|x64
+		{DB2CC2E3-4754-4932-B865-424A44E58FD0}.Release|Any CPU.Build.0 = Release|x64
 		{DB2CC2E3-4754-4932-B865-424A44E58FD0}.Release|Win32.ActiveCfg = Release|Win32
 		{DB2CC2E3-4754-4932-B865-424A44E58FD0}.Release|Win32.Build.0 = Release|Win32
 		{DB2CC2E3-4754-4932-B865-424A44E58FD0}.Release|x64.ActiveCfg = Release|x64
 		{DB2CC2E3-4754-4932-B865-424A44E58FD0}.Release|x64.Build.0 = Release|x64
+		{8D947123-A12C-45DA-BD00-8B62DD5A0459}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{8D947123-A12C-45DA-BD00-8B62DD5A0459}.Debug|Any CPU.Build.0 = Debug|x64
 		{8D947123-A12C-45DA-BD00-8B62DD5A0459}.Debug|Win32.ActiveCfg = Debug|Win32
 		{8D947123-A12C-45DA-BD00-8B62DD5A0459}.Debug|Win32.Build.0 = Debug|Win32
 		{8D947123-A12C-45DA-BD00-8B62DD5A0459}.Debug|x64.ActiveCfg = Debug|x64
 		{8D947123-A12C-45DA-BD00-8B62DD5A0459}.Debug|x64.Build.0 = Debug|x64
+		{8D947123-A12C-45DA-BD00-8B62DD5A0459}.Release|Any CPU.ActiveCfg = Release|x64
+		{8D947123-A12C-45DA-BD00-8B62DD5A0459}.Release|Any CPU.Build.0 = Release|x64
 		{8D947123-A12C-45DA-BD00-8B62DD5A0459}.Release|Win32.ActiveCfg = Release|Win32
 		{8D947123-A12C-45DA-BD00-8B62DD5A0459}.Release|Win32.Build.0 = Release|Win32
 		{8D947123-A12C-45DA-BD00-8B62DD5A0459}.Release|x64.ActiveCfg = Release|x64
 		{8D947123-A12C-45DA-BD00-8B62DD5A0459}.Release|x64.Build.0 = Release|x64
+		{8F654896-85DC-4F32-99B2-670D66B0FBF1}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{8F654896-85DC-4F32-99B2-670D66B0FBF1}.Debug|Any CPU.Build.0 = Debug|x64
 		{8F654896-85DC-4F32-99B2-670D66B0FBF1}.Debug|Win32.ActiveCfg = Debug|Win32
 		{8F654896-85DC-4F32-99B2-670D66B0FBF1}.Debug|Win32.Build.0 = Debug|Win32
 		{8F654896-85DC-4F32-99B2-670D66B0FBF1}.Debug|x64.ActiveCfg = Debug|x64
 		{8F654896-85DC-4F32-99B2-670D66B0FBF1}.Debug|x64.Build.0 = Debug|x64
+		{8F654896-85DC-4F32-99B2-670D66B0FBF1}.Release|Any CPU.ActiveCfg = Release|x64
+		{8F654896-85DC-4F32-99B2-670D66B0FBF1}.Release|Any CPU.Build.0 = Release|x64
 		{8F654896-85DC-4F32-99B2-670D66B0FBF1}.Release|Win32.ActiveCfg = Release|Win32
 		{8F654896-85DC-4F32-99B2-670D66B0FBF1}.Release|Win32.Build.0 = Release|Win32
 		{8F654896-85DC-4F32-99B2-670D66B0FBF1}.Release|x64.ActiveCfg = Release|x64
 		{8F654896-85DC-4F32-99B2-670D66B0FBF1}.Release|x64.Build.0 = Release|x64
+		{E6B0012F-58F6-42F4-8F02-065C35829569}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{E6B0012F-58F6-42F4-8F02-065C35829569}.Debug|Any CPU.Build.0 = Debug|x64
 		{E6B0012F-58F6-42F4-8F02-065C35829569}.Debug|Win32.ActiveCfg = Debug|Win32
 		{E6B0012F-58F6-42F4-8F02-065C35829569}.Debug|Win32.Build.0 = Debug|Win32
 		{E6B0012F-58F6-42F4-8F02-065C35829569}.Debug|x64.ActiveCfg = Debug|x64
 		{E6B0012F-58F6-42F4-8F02-065C35829569}.Debug|x64.Build.0 = Debug|x64
+		{E6B0012F-58F6-42F4-8F02-065C35829569}.Release|Any CPU.ActiveCfg = Release|x64
+		{E6B0012F-58F6-42F4-8F02-065C35829569}.Release|Any CPU.Build.0 = Release|x64
 		{E6B0012F-58F6-42F4-8F02-065C35829569}.Release|Win32.ActiveCfg = Release|Win32
 		{E6B0012F-58F6-42F4-8F02-065C35829569}.Release|Win32.Build.0 = Release|Win32
 		{E6B0012F-58F6-42F4-8F02-065C35829569}.Release|x64.ActiveCfg = Release|x64
 		{E6B0012F-58F6-42F4-8F02-065C35829569}.Release|x64.Build.0 = Release|x64
+		{CBC0339F-E68B-48BA-9059-945483BEBDCA}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{CBC0339F-E68B-48BA-9059-945483BEBDCA}.Debug|Any CPU.Build.0 = Debug|x64
 		{CBC0339F-E68B-48BA-9059-945483BEBDCA}.Debug|Win32.ActiveCfg = Debug|Win32
 		{CBC0339F-E68B-48BA-9059-945483BEBDCA}.Debug|Win32.Build.0 = Debug|Win32
 		{CBC0339F-E68B-48BA-9059-945483BEBDCA}.Debug|x64.ActiveCfg = Debug|x64
 		{CBC0339F-E68B-48BA-9059-945483BEBDCA}.Debug|x64.Build.0 = Debug|x64
+		{CBC0339F-E68B-48BA-9059-945483BEBDCA}.Release|Any CPU.ActiveCfg = Release|x64
+		{CBC0339F-E68B-48BA-9059-945483BEBDCA}.Release|Any CPU.Build.0 = Release|x64
 		{CBC0339F-E68B-48BA-9059-945483BEBDCA}.Release|Win32.ActiveCfg = Release|Win32
 		{CBC0339F-E68B-48BA-9059-945483BEBDCA}.Release|Win32.Build.0 = Release|Win32
 		{CBC0339F-E68B-48BA-9059-945483BEBDCA}.Release|x64.ActiveCfg = Release|x64
 		{CBC0339F-E68B-48BA-9059-945483BEBDCA}.Release|x64.Build.0 = Release|x64
+		{67505883-F667-4C18-BCCA-63F3B76C64FF}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{67505883-F667-4C18-BCCA-63F3B76C64FF}.Debug|Any CPU.Build.0 = Debug|x64
 		{67505883-F667-4C18-BCCA-63F3B76C64FF}.Debug|Win32.ActiveCfg = Debug|Win32
 		{67505883-F667-4C18-BCCA-63F3B76C64FF}.Debug|Win32.Build.0 = Debug|Win32
 		{67505883-F667-4C18-BCCA-63F3B76C64FF}.Debug|x64.ActiveCfg = Debug|x64
 		{67505883-F667-4C18-BCCA-63F3B76C64FF}.Debug|x64.Build.0 = Debug|x64
+		{67505883-F667-4C18-BCCA-63F3B76C64FF}.Release|Any CPU.ActiveCfg = Release|x64
+		{67505883-F667-4C18-BCCA-63F3B76C64FF}.Release|Any CPU.Build.0 = Release|x64
 		{67505883-F667-4C18-BCCA-63F3B76C64FF}.Release|Win32.ActiveCfg = Release|Win32
 		{67505883-F667-4C18-BCCA-63F3B76C64FF}.Release|Win32.Build.0 = Release|Win32
 		{67505883-F667-4C18-BCCA-63F3B76C64FF}.Release|x64.ActiveCfg = Release|x64
 		{67505883-F667-4C18-BCCA-63F3B76C64FF}.Release|x64.Build.0 = Release|x64
+		{7C1C5695-C51C-4017-ABEF-BC3032CBAF3B}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{7C1C5695-C51C-4017-ABEF-BC3032CBAF3B}.Debug|Any CPU.Build.0 = Debug|x64
 		{7C1C5695-C51C-4017-ABEF-BC3032CBAF3B}.Debug|Win32.ActiveCfg = Debug|Win32
 		{7C1C5695-C51C-4017-ABEF-BC3032CBAF3B}.Debug|Win32.Build.0 = Debug|Win32
 		{7C1C5695-C51C-4017-ABEF-BC3032CBAF3B}.Debug|x64.ActiveCfg = Debug|x64
 		{7C1C5695-C51C-4017-ABEF-BC3032CBAF3B}.Debug|x64.Build.0 = Debug|x64
+		{7C1C5695-C51C-4017-ABEF-BC3032CBAF3B}.Release|Any CPU.ActiveCfg = Release|x64
+		{7C1C5695-C51C-4017-ABEF-BC3032CBAF3B}.Release|Any CPU.Build.0 = Release|x64
 		{7C1C5695-C51C-4017-ABEF-BC3032CBAF3B}.Release|Win32.ActiveCfg = Release|Win32
 		{7C1C5695-C51C-4017-ABEF-BC3032CBAF3B}.Release|Win32.Build.0 = Release|Win32
 		{7C1C5695-C51C-4017-ABEF-BC3032CBAF3B}.Release|x64.ActiveCfg = Release|x64
 		{7C1C5695-C51C-4017-ABEF-BC3032CBAF3B}.Release|x64.Build.0 = Release|x64
+		{94580073-62BC-4E59-86DE-DF36EC6DAAEA}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{94580073-62BC-4E59-86DE-DF36EC6DAAEA}.Debug|Any CPU.Build.0 = Debug|x64
 		{94580073-62BC-4E59-86DE-DF36EC6DAAEA}.Debug|Win32.ActiveCfg = Debug|x64
 		{94580073-62BC-4E59-86DE-DF36EC6DAAEA}.Debug|Win32.Build.0 = Debug|x64
 		{94580073-62BC-4E59-86DE-DF36EC6DAAEA}.Debug|x64.ActiveCfg = Debug|x64
 		{94580073-62BC-4E59-86DE-DF36EC6DAAEA}.Debug|x64.Build.0 = Debug|x64
+		{94580073-62BC-4E59-86DE-DF36EC6DAAEA}.Release|Any CPU.ActiveCfg = Release|x64
+		{94580073-62BC-4E59-86DE-DF36EC6DAAEA}.Release|Any CPU.Build.0 = Release|x64
 		{94580073-62BC-4E59-86DE-DF36EC6DAAEA}.Release|Win32.ActiveCfg = Release|x64
 		{94580073-62BC-4E59-86DE-DF36EC6DAAEA}.Release|Win32.Build.0 = Release|x64
 		{94580073-62BC-4E59-86DE-DF36EC6DAAEA}.Release|x64.ActiveCfg = Release|x64
 		{94580073-62BC-4E59-86DE-DF36EC6DAAEA}.Release|x64.Build.0 = Release|x64
+		{B601F04C-0D42-4AFC-A092-B31185E2EA8C}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{B601F04C-0D42-4AFC-A092-B31185E2EA8C}.Debug|Any CPU.Build.0 = Debug|x64
 		{B601F04C-0D42-4AFC-A092-B31185E2EA8C}.Debug|Win32.ActiveCfg = Debug|x64
 		{B601F04C-0D42-4AFC-A092-B31185E2EA8C}.Debug|Win32.Build.0 = Debug|x64
 		{B601F04C-0D42-4AFC-A092-B31185E2EA8C}.Debug|x64.ActiveCfg = Debug|x64
 		{B601F04C-0D42-4AFC-A092-B31185E2EA8C}.Debug|x64.Build.0 = Debug|x64
+		{B601F04C-0D42-4AFC-A092-B31185E2EA8C}.Release|Any CPU.ActiveCfg = Release|x64
+		{B601F04C-0D42-4AFC-A092-B31185E2EA8C}.Release|Any CPU.Build.0 = Release|x64
 		{B601F04C-0D42-4AFC-A092-B31185E2EA8C}.Release|Win32.ActiveCfg = Release|x64
 		{B601F04C-0D42-4AFC-A092-B31185E2EA8C}.Release|Win32.Build.0 = Release|x64
 		{B601F04C-0D42-4AFC-A092-B31185E2EA8C}.Release|x64.ActiveCfg = Release|x64
 		{B601F04C-0D42-4AFC-A092-B31185E2EA8C}.Release|x64.Build.0 = Release|x64
+		{73C62FF2-C188-4A61-929E-2F112D7E17AA}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{73C62FF2-C188-4A61-929E-2F112D7E17AA}.Debug|Any CPU.Build.0 = Debug|x64
 		{73C62FF2-C188-4A61-929E-2F112D7E17AA}.Debug|Win32.ActiveCfg = Debug|x64
 		{73C62FF2-C188-4A61-929E-2F112D7E17AA}.Debug|Win32.Build.0 = Debug|x64
 		{73C62FF2-C188-4A61-929E-2F112D7E17AA}.Debug|x64.ActiveCfg = Debug|x64
 		{73C62FF2-C188-4A61-929E-2F112D7E17AA}.Debug|x64.Build.0 = Debug|x64
+		{73C62FF2-C188-4A61-929E-2F112D7E17AA}.Release|Any CPU.ActiveCfg = Release|x64
+		{73C62FF2-C188-4A61-929E-2F112D7E17AA}.Release|Any CPU.Build.0 = Release|x64
 		{73C62FF2-C188-4A61-929E-2F112D7E17AA}.Release|Win32.ActiveCfg = Release|x64
 		{73C62FF2-C188-4A61-929E-2F112D7E17AA}.Release|Win32.Build.0 = Release|x64
 		{73C62FF2-C188-4A61-929E-2F112D7E17AA}.Release|x64.ActiveCfg = Release|x64
 		{73C62FF2-C188-4A61-929E-2F112D7E17AA}.Release|x64.Build.0 = Release|x64
+		{B994F673-EB8E-4C65-8884-B56AB8783115}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{B994F673-EB8E-4C65-8884-B56AB8783115}.Debug|Any CPU.Build.0 = Debug|x64
 		{B994F673-EB8E-4C65-8884-B56AB8783115}.Debug|Win32.ActiveCfg = Debug|x64
 		{B994F673-EB8E-4C65-8884-B56AB8783115}.Debug|Win32.Build.0 = Debug|x64
 		{B994F673-EB8E-4C65-8884-B56AB8783115}.Debug|x64.ActiveCfg = Debug|x64
 		{B994F673-EB8E-4C65-8884-B56AB8783115}.Debug|x64.Build.0 = Debug|x64
+		{B994F673-EB8E-4C65-8884-B56AB8783115}.Release|Any CPU.ActiveCfg = Release|x64
+		{B994F673-EB8E-4C65-8884-B56AB8783115}.Release|Any CPU.Build.0 = Release|x64
 		{B994F673-EB8E-4C65-8884-B56AB8783115}.Release|Win32.ActiveCfg = Release|x64
 		{B994F673-EB8E-4C65-8884-B56AB8783115}.Release|Win32.Build.0 = Release|x64
 		{B994F673-EB8E-4C65-8884-B56AB8783115}.Release|x64.ActiveCfg = Release|x64
 		{B994F673-EB8E-4C65-8884-B56AB8783115}.Release|x64.Build.0 = Release|x64
+		{3BAE3F0E-8F3F-404B-B29B-5881C16BD33B}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{3BAE3F0E-8F3F-404B-B29B-5881C16BD33B}.Debug|Any CPU.Build.0 = Debug|x64
 		{3BAE3F0E-8F3F-404B-B29B-5881C16BD33B}.Debug|Win32.ActiveCfg = Debug|x64
 		{3BAE3F0E-8F3F-404B-B29B-5881C16BD33B}.Debug|Win32.Build.0 = Debug|x64
 		{3BAE3F0E-8F3F-404B-B29B-5881C16BD33B}.Debug|x64.ActiveCfg = Debug|x64
 		{3BAE3F0E-8F3F-404B-B29B-5881C16BD33B}.Debug|x64.Build.0 = Debug|x64
+		{3BAE3F0E-8F3F-404B-B29B-5881C16BD33B}.Release|Any CPU.ActiveCfg = Release|x64
+		{3BAE3F0E-8F3F-404B-B29B-5881C16BD33B}.Release|Any CPU.Build.0 = Release|x64
 		{3BAE3F0E-8F3F-404B-B29B-5881C16BD33B}.Release|Win32.ActiveCfg = Release|x64
 		{3BAE3F0E-8F3F-404B-B29B-5881C16BD33B}.Release|Win32.Build.0 = Release|x64
 		{3BAE3F0E-8F3F-404B-B29B-5881C16BD33B}.Release|x64.ActiveCfg = Release|x64
 		{3BAE3F0E-8F3F-404B-B29B-5881C16BD33B}.Release|x64.Build.0 = Release|x64
+		{DC28F4ED-B1EC-4A65-9866-F629D2A12782}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DC28F4ED-B1EC-4A65-9866-F629D2A12782}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{DC28F4ED-B1EC-4A65-9866-F629D2A12782}.Debug|Win32.ActiveCfg = Debug|Any CPU
 		{DC28F4ED-B1EC-4A65-9866-F629D2A12782}.Debug|Win32.Build.0 = Debug|Any CPU
 		{DC28F4ED-B1EC-4A65-9866-F629D2A12782}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{DC28F4ED-B1EC-4A65-9866-F629D2A12782}.Debug|x64.Build.0 = Debug|Any CPU
+		{DC28F4ED-B1EC-4A65-9866-F629D2A12782}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{DC28F4ED-B1EC-4A65-9866-F629D2A12782}.Release|Any CPU.Build.0 = Release|Any CPU
 		{DC28F4ED-B1EC-4A65-9866-F629D2A12782}.Release|Win32.ActiveCfg = Release|Any CPU
 		{DC28F4ED-B1EC-4A65-9866-F629D2A12782}.Release|Win32.Build.0 = Release|Any CPU
 		{DC28F4ED-B1EC-4A65-9866-F629D2A12782}.Release|x64.ActiveCfg = Release|Any CPU
 		{DC28F4ED-B1EC-4A65-9866-F629D2A12782}.Release|x64.Build.0 = Release|Any CPU
+		{26A8B65F-D08B-4BD1-9DDC-0DC68488DD0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{26A8B65F-D08B-4BD1-9DDC-0DC68488DD0A}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{26A8B65F-D08B-4BD1-9DDC-0DC68488DD0A}.Debug|Win32.ActiveCfg = Debug|Any CPU
 		{26A8B65F-D08B-4BD1-9DDC-0DC68488DD0A}.Debug|Win32.Build.0 = Debug|Any CPU
 		{26A8B65F-D08B-4BD1-9DDC-0DC68488DD0A}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{26A8B65F-D08B-4BD1-9DDC-0DC68488DD0A}.Debug|x64.Build.0 = Debug|Any CPU
+		{26A8B65F-D08B-4BD1-9DDC-0DC68488DD0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{26A8B65F-D08B-4BD1-9DDC-0DC68488DD0A}.Release|Any CPU.Build.0 = Release|Any CPU
 		{26A8B65F-D08B-4BD1-9DDC-0DC68488DD0A}.Release|Win32.ActiveCfg = Release|Any CPU
 		{26A8B65F-D08B-4BD1-9DDC-0DC68488DD0A}.Release|Win32.Build.0 = Release|Any CPU
 		{26A8B65F-D08B-4BD1-9DDC-0DC68488DD0A}.Release|x64.ActiveCfg = Release|Any CPU
 		{26A8B65F-D08B-4BD1-9DDC-0DC68488DD0A}.Release|x64.Build.0 = Release|Any CPU
+		{8A85841D-9475-456B-929F-C3B6C49679EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{8A85841D-9475-456B-929F-C3B6C49679EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{8A85841D-9475-456B-929F-C3B6C49679EF}.Debug|Win32.ActiveCfg = Debug|Any CPU
 		{8A85841D-9475-456B-929F-C3B6C49679EF}.Debug|Win32.Build.0 = Debug|Any CPU
 		{8A85841D-9475-456B-929F-C3B6C49679EF}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{8A85841D-9475-456B-929F-C3B6C49679EF}.Debug|x64.Build.0 = Debug|Any CPU
+		{8A85841D-9475-456B-929F-C3B6C49679EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{8A85841D-9475-456B-929F-C3B6C49679EF}.Release|Any CPU.Build.0 = Release|Any CPU
 		{8A85841D-9475-456B-929F-C3B6C49679EF}.Release|Win32.ActiveCfg = Release|Any CPU
 		{8A85841D-9475-456B-929F-C3B6C49679EF}.Release|Win32.Build.0 = Release|Any CPU
 		{8A85841D-9475-456B-929F-C3B6C49679EF}.Release|x64.ActiveCfg = Release|Any CPU
 		{8A85841D-9475-456B-929F-C3B6C49679EF}.Release|x64.Build.0 = Release|Any CPU
+		{D319AD4A-7233-42BF-ABE8-445D99EA5F65}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D319AD4A-7233-42BF-ABE8-445D99EA5F65}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{D319AD4A-7233-42BF-ABE8-445D99EA5F65}.Debug|Win32.ActiveCfg = Debug|Any CPU
 		{D319AD4A-7233-42BF-ABE8-445D99EA5F65}.Debug|Win32.Build.0 = Debug|Any CPU
 		{D319AD4A-7233-42BF-ABE8-445D99EA5F65}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{D319AD4A-7233-42BF-ABE8-445D99EA5F65}.Debug|x64.Build.0 = Debug|Any CPU
+		{D319AD4A-7233-42BF-ABE8-445D99EA5F65}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D319AD4A-7233-42BF-ABE8-445D99EA5F65}.Release|Any CPU.Build.0 = Release|Any CPU
 		{D319AD4A-7233-42BF-ABE8-445D99EA5F65}.Release|Win32.ActiveCfg = Release|Any CPU
 		{D319AD4A-7233-42BF-ABE8-445D99EA5F65}.Release|Win32.Build.0 = Release|Any CPU
 		{D319AD4A-7233-42BF-ABE8-445D99EA5F65}.Release|x64.ActiveCfg = Release|Any CPU
 		{D319AD4A-7233-42BF-ABE8-445D99EA5F65}.Release|x64.Build.0 = Release|Any CPU
+		{437CEF18-B1B5-4B1F-808A-4D35B304A16D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{437CEF18-B1B5-4B1F-808A-4D35B304A16D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{437CEF18-B1B5-4B1F-808A-4D35B304A16D}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{437CEF18-B1B5-4B1F-808A-4D35B304A16D}.Debug|Win32.Build.0 = Debug|Any CPU
+		{437CEF18-B1B5-4B1F-808A-4D35B304A16D}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{437CEF18-B1B5-4B1F-808A-4D35B304A16D}.Debug|x64.Build.0 = Debug|Any CPU
+		{437CEF18-B1B5-4B1F-808A-4D35B304A16D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{437CEF18-B1B5-4B1F-808A-4D35B304A16D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{437CEF18-B1B5-4B1F-808A-4D35B304A16D}.Release|Win32.ActiveCfg = Release|Any CPU
+		{437CEF18-B1B5-4B1F-808A-4D35B304A16D}.Release|Win32.Build.0 = Release|Any CPU
+		{437CEF18-B1B5-4B1F-808A-4D35B304A16D}.Release|x64.ActiveCfg = Release|Any CPU
+		{437CEF18-B1B5-4B1F-808A-4D35B304A16D}.Release|x64.Build.0 = Release|Any CPU
+		{B6BAF40C-7BD6-481D-8939-DBE477DCCDA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B6BAF40C-7BD6-481D-8939-DBE477DCCDA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B6BAF40C-7BD6-481D-8939-DBE477DCCDA0}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{B6BAF40C-7BD6-481D-8939-DBE477DCCDA0}.Debug|Win32.Build.0 = Debug|Any CPU
+		{B6BAF40C-7BD6-481D-8939-DBE477DCCDA0}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{B6BAF40C-7BD6-481D-8939-DBE477DCCDA0}.Debug|x64.Build.0 = Debug|Any CPU
+		{B6BAF40C-7BD6-481D-8939-DBE477DCCDA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B6BAF40C-7BD6-481D-8939-DBE477DCCDA0}.Release|Any CPU.Build.0 = Release|Any CPU
+		{B6BAF40C-7BD6-481D-8939-DBE477DCCDA0}.Release|Win32.ActiveCfg = Release|Any CPU
+		{B6BAF40C-7BD6-481D-8939-DBE477DCCDA0}.Release|Win32.Build.0 = Release|Any CPU
+		{B6BAF40C-7BD6-481D-8939-DBE477DCCDA0}.Release|x64.ActiveCfg = Release|Any CPU
+		{B6BAF40C-7BD6-481D-8939-DBE477DCCDA0}.Release|x64.Build.0 = Release|Any CPU
+		{5253D101-4C65-44C3-9BFC-FD4E6EAD930F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5253D101-4C65-44C3-9BFC-FD4E6EAD930F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{5253D101-4C65-44C3-9BFC-FD4E6EAD930F}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{5253D101-4C65-44C3-9BFC-FD4E6EAD930F}.Debug|Win32.Build.0 = Debug|Any CPU
+		{5253D101-4C65-44C3-9BFC-FD4E6EAD930F}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{5253D101-4C65-44C3-9BFC-FD4E6EAD930F}.Debug|x64.Build.0 = Debug|Any CPU
+		{5253D101-4C65-44C3-9BFC-FD4E6EAD930F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5253D101-4C65-44C3-9BFC-FD4E6EAD930F}.Release|Any CPU.Build.0 = Release|Any CPU
+		{5253D101-4C65-44C3-9BFC-FD4E6EAD930F}.Release|Win32.ActiveCfg = Release|Any CPU
+		{5253D101-4C65-44C3-9BFC-FD4E6EAD930F}.Release|Win32.Build.0 = Release|Any CPU
+		{5253D101-4C65-44C3-9BFC-FD4E6EAD930F}.Release|x64.ActiveCfg = Release|Any CPU
+		{5253D101-4C65-44C3-9BFC-FD4E6EAD930F}.Release|x64.Build.0 = Release|Any CPU
+		{EFDE704C-9B3E-4350-8E43-952FA13F57B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{EFDE704C-9B3E-4350-8E43-952FA13F57B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{EFDE704C-9B3E-4350-8E43-952FA13F57B9}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{EFDE704C-9B3E-4350-8E43-952FA13F57B9}.Debug|Win32.Build.0 = Debug|Any CPU
+		{EFDE704C-9B3E-4350-8E43-952FA13F57B9}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{EFDE704C-9B3E-4350-8E43-952FA13F57B9}.Debug|x64.Build.0 = Debug|Any CPU
+		{EFDE704C-9B3E-4350-8E43-952FA13F57B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{EFDE704C-9B3E-4350-8E43-952FA13F57B9}.Release|Any CPU.Build.0 = Release|Any CPU
+		{EFDE704C-9B3E-4350-8E43-952FA13F57B9}.Release|Win32.ActiveCfg = Release|Any CPU
+		{EFDE704C-9B3E-4350-8E43-952FA13F57B9}.Release|Win32.Build.0 = Release|Any CPU
+		{EFDE704C-9B3E-4350-8E43-952FA13F57B9}.Release|x64.ActiveCfg = Release|Any CPU
+		{EFDE704C-9B3E-4350-8E43-952FA13F57B9}.Release|x64.Build.0 = Release|Any CPU
+		{72804B1F-414C-4749-A86E-9ED5D884BB0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{72804B1F-414C-4749-A86E-9ED5D884BB0F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{72804B1F-414C-4749-A86E-9ED5D884BB0F}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{72804B1F-414C-4749-A86E-9ED5D884BB0F}.Debug|Win32.Build.0 = Debug|Any CPU
+		{72804B1F-414C-4749-A86E-9ED5D884BB0F}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{72804B1F-414C-4749-A86E-9ED5D884BB0F}.Debug|x64.Build.0 = Debug|Any CPU
+		{72804B1F-414C-4749-A86E-9ED5D884BB0F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{72804B1F-414C-4749-A86E-9ED5D884BB0F}.Release|Any CPU.Build.0 = Release|Any CPU
+		{72804B1F-414C-4749-A86E-9ED5D884BB0F}.Release|Win32.ActiveCfg = Release|Any CPU
+		{72804B1F-414C-4749-A86E-9ED5D884BB0F}.Release|Win32.Build.0 = Release|Any CPU
+		{72804B1F-414C-4749-A86E-9ED5D884BB0F}.Release|x64.ActiveCfg = Release|Any CPU
+		{72804B1F-414C-4749-A86E-9ED5D884BB0F}.Release|x64.Build.0 = Release|Any CPU
+		{95FC1143-4F9C-4982-8EBC-405D7731EB68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{95FC1143-4F9C-4982-8EBC-405D7731EB68}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{95FC1143-4F9C-4982-8EBC-405D7731EB68}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{95FC1143-4F9C-4982-8EBC-405D7731EB68}.Debug|Win32.Build.0 = Debug|Any CPU
+		{95FC1143-4F9C-4982-8EBC-405D7731EB68}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{95FC1143-4F9C-4982-8EBC-405D7731EB68}.Debug|x64.Build.0 = Debug|Any CPU
+		{95FC1143-4F9C-4982-8EBC-405D7731EB68}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{95FC1143-4F9C-4982-8EBC-405D7731EB68}.Release|Any CPU.Build.0 = Release|Any CPU
+		{95FC1143-4F9C-4982-8EBC-405D7731EB68}.Release|Win32.ActiveCfg = Release|Any CPU
+		{95FC1143-4F9C-4982-8EBC-405D7731EB68}.Release|Win32.Build.0 = Release|Any CPU
+		{95FC1143-4F9C-4982-8EBC-405D7731EB68}.Release|x64.ActiveCfg = Release|Any CPU
+		{95FC1143-4F9C-4982-8EBC-405D7731EB68}.Release|x64.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -327,6 +507,12 @@
 		{26A8B65F-D08B-4BD1-9DDC-0DC68488DD0A} = {DEE3ED40-39B9-4D9A-9529-E858C24CC2A2}
 		{8A85841D-9475-456B-929F-C3B6C49679EF} = {DEE3ED40-39B9-4D9A-9529-E858C24CC2A2}
 		{D319AD4A-7233-42BF-ABE8-445D99EA5F65} = {DEE3ED40-39B9-4D9A-9529-E858C24CC2A2}
+		{437CEF18-B1B5-4B1F-808A-4D35B304A16D} = {6C1E7AB7-DF4B-49C4-A252-1EA8AC7BD18E}
+		{B6BAF40C-7BD6-481D-8939-DBE477DCCDA0} = {6C1E7AB7-DF4B-49C4-A252-1EA8AC7BD18E}
+		{5253D101-4C65-44C3-9BFC-FD4E6EAD930F} = {6C1E7AB7-DF4B-49C4-A252-1EA8AC7BD18E}
+		{EFDE704C-9B3E-4350-8E43-952FA13F57B9} = {6C1E7AB7-DF4B-49C4-A252-1EA8AC7BD18E}
+		{72804B1F-414C-4749-A86E-9ED5D884BB0F} = {6C1E7AB7-DF4B-49C4-A252-1EA8AC7BD18E}
+		{95FC1143-4F9C-4982-8EBC-405D7731EB68} = {6C1E7AB7-DF4B-49C4-A252-1EA8AC7BD18E}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {0313274F-0C94-4CDC-AEB2-1A1F4E23E4DB}

Deleted: branches/4.0/MgDev/Portable/PortableDotNet.sln
===================================================================
--- branches/4.0/MgDev/Portable/PortableDotNet.sln	2025-02-06 00:32:23 UTC (rev 10117)
+++ branches/4.0/MgDev/Portable/PortableDotNet.sln	2025-02-06 02:59:26 UTC (rev 10118)
@@ -1,76 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Express 2012 for Windows Desktop
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetHarness", "DotNetHarness\DotNetHarness.csproj", "{A5881D59-BD24-4A3A-A707-F18A25724D29}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetUnitTest", "DotNetUnitTest\DotNetUnitTest.csproj", "{FDA196F0-3C55-4360-B207-BA5EF6D746F8}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MapViewer", "MapViewer\MapViewer.csproj", "{D46ED17B-329B-4D80-9181-FEF8307EFCBB}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MapViewer.Desktop", "MapViewer.Desktop\MapViewer.Desktop.csproj", "{E2001B46-F226-4F7B-911E-252B9644236E}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MapViewerTest", "MapViewerTest\MapViewerTest.csproj", "{E2FC8B99-0638-4C01-86C4-1B625D966981}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MgAppLayout", "MgAppLayout\MgAppLayout.csproj", "{F6054D81-E857-49FB-945F-AC2ECD9BB27A}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|x64 = Debug|x64
-		Debug|x86 = Debug|x86
-		Release|x64 = Release|x64
-		Release|x86 = Release|x86
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{A5881D59-BD24-4A3A-A707-F18A25724D29}.Debug|x64.ActiveCfg = Debug|x64
-		{A5881D59-BD24-4A3A-A707-F18A25724D29}.Debug|x64.Build.0 = Debug|x64
-		{A5881D59-BD24-4A3A-A707-F18A25724D29}.Debug|x86.ActiveCfg = Debug|x86
-		{A5881D59-BD24-4A3A-A707-F18A25724D29}.Debug|x86.Build.0 = Debug|x86
-		{A5881D59-BD24-4A3A-A707-F18A25724D29}.Release|x64.ActiveCfg = Release|x64
-		{A5881D59-BD24-4A3A-A707-F18A25724D29}.Release|x64.Build.0 = Release|x64
-		{A5881D59-BD24-4A3A-A707-F18A25724D29}.Release|x86.ActiveCfg = Release|x86
-		{A5881D59-BD24-4A3A-A707-F18A25724D29}.Release|x86.Build.0 = Release|x86
-		{FDA196F0-3C55-4360-B207-BA5EF6D746F8}.Debug|x64.ActiveCfg = Debug|x64
-		{FDA196F0-3C55-4360-B207-BA5EF6D746F8}.Debug|x64.Build.0 = Debug|x64
-		{FDA196F0-3C55-4360-B207-BA5EF6D746F8}.Debug|x86.ActiveCfg = Debug|x86
-		{FDA196F0-3C55-4360-B207-BA5EF6D746F8}.Debug|x86.Build.0 = Debug|x86
-		{FDA196F0-3C55-4360-B207-BA5EF6D746F8}.Release|x64.ActiveCfg = Release|x64
-		{FDA196F0-3C55-4360-B207-BA5EF6D746F8}.Release|x64.Build.0 = Release|x64
-		{FDA196F0-3C55-4360-B207-BA5EF6D746F8}.Release|x86.ActiveCfg = Release|x86
-		{FDA196F0-3C55-4360-B207-BA5EF6D746F8}.Release|x86.Build.0 = Release|x86
-		{D46ED17B-329B-4D80-9181-FEF8307EFCBB}.Debug|x64.ActiveCfg = Debug|Any CPU
-		{D46ED17B-329B-4D80-9181-FEF8307EFCBB}.Debug|x64.Build.0 = Debug|Any CPU
-		{D46ED17B-329B-4D80-9181-FEF8307EFCBB}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{D46ED17B-329B-4D80-9181-FEF8307EFCBB}.Debug|x86.Build.0 = Debug|Any CPU
-		{D46ED17B-329B-4D80-9181-FEF8307EFCBB}.Release|x64.ActiveCfg = Release|Any CPU
-		{D46ED17B-329B-4D80-9181-FEF8307EFCBB}.Release|x64.Build.0 = Release|Any CPU
-		{D46ED17B-329B-4D80-9181-FEF8307EFCBB}.Release|x86.ActiveCfg = Release|Any CPU
-		{D46ED17B-329B-4D80-9181-FEF8307EFCBB}.Release|x86.Build.0 = Release|Any CPU
-		{E2001B46-F226-4F7B-911E-252B9644236E}.Debug|x64.ActiveCfg = Debug|Any CPU
-		{E2001B46-F226-4F7B-911E-252B9644236E}.Debug|x64.Build.0 = Debug|Any CPU
-		{E2001B46-F226-4F7B-911E-252B9644236E}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{E2001B46-F226-4F7B-911E-252B9644236E}.Debug|x86.Build.0 = Debug|Any CPU
-		{E2001B46-F226-4F7B-911E-252B9644236E}.Release|x64.ActiveCfg = Release|Any CPU
-		{E2001B46-F226-4F7B-911E-252B9644236E}.Release|x64.Build.0 = Release|Any CPU
-		{E2001B46-F226-4F7B-911E-252B9644236E}.Release|x86.ActiveCfg = Release|Any CPU
-		{E2001B46-F226-4F7B-911E-252B9644236E}.Release|x86.Build.0 = Release|Any CPU
-		{E2FC8B99-0638-4C01-86C4-1B625D966981}.Debug|x64.ActiveCfg = Debug|x64
-		{E2FC8B99-0638-4C01-86C4-1B625D966981}.Debug|x64.Build.0 = Debug|x64
-		{E2FC8B99-0638-4C01-86C4-1B625D966981}.Debug|x86.ActiveCfg = Debug|x86
-		{E2FC8B99-0638-4C01-86C4-1B625D966981}.Debug|x86.Build.0 = Debug|x86
-		{E2FC8B99-0638-4C01-86C4-1B625D966981}.Release|x64.ActiveCfg = Release|x64
-		{E2FC8B99-0638-4C01-86C4-1B625D966981}.Release|x64.Build.0 = Release|x64
-		{E2FC8B99-0638-4C01-86C4-1B625D966981}.Release|x86.ActiveCfg = Release|x86
-		{E2FC8B99-0638-4C01-86C4-1B625D966981}.Release|x86.Build.0 = Release|x86
-		{F6054D81-E857-49FB-945F-AC2ECD9BB27A}.Debug|x64.ActiveCfg = Debug|x64
-		{F6054D81-E857-49FB-945F-AC2ECD9BB27A}.Debug|x64.Build.0 = Debug|x64
-		{F6054D81-E857-49FB-945F-AC2ECD9BB27A}.Debug|x86.ActiveCfg = Debug|x86
-		{F6054D81-E857-49FB-945F-AC2ECD9BB27A}.Debug|x86.Build.0 = Debug|x86
-		{F6054D81-E857-49FB-945F-AC2ECD9BB27A}.Release|x64.ActiveCfg = Release|x64
-		{F6054D81-E857-49FB-945F-AC2ECD9BB27A}.Release|x64.Build.0 = Release|x64
-		{F6054D81-E857-49FB-945F-AC2ECD9BB27A}.Release|x86.ActiveCfg = Release|x86
-		{F6054D81-E857-49FB-945F-AC2ECD9BB27A}.Release|x86.Build.0 = Release|x86
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal



More information about the mapguide-commits mailing list