diff --git a/test/Renci.SshNet.Shared.Tests/Abstractions/DnsAbstraction_GetHostAddresses.cs b/test/Renci.SshNet.Shared.Tests/Abstractions/DnsAbstraction_GetHostAddresses.cs
new file mode 100644
index 00000000..f530b39f
--- /dev/null
+++ b/test/Renci.SshNet.Shared.Tests/Abstractions/DnsAbstraction_GetHostAddresses.cs
@@ -0,0 +1,92 @@
+using System;
+using System.Net;
+using System.Net.Sockets;
+#if SILVERLIGHT
+using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+#endif
+using Renci.SshNet.Abstractions;
+
+namespace Renci.SshNet.Tests.Abstractions
+{
+ [TestClass]
+ public class DnsAbstraction_GetHostAddresses
+ {
+ [TestMethod]
+ public void ShouldThrowArgumentNullExceptionWhenHostNameOrAddressIsNull()
+ {
+ const string hostNameOrAddress = null;
+
+ try
+ {
+ DnsAbstraction.GetHostAddresses(hostNameOrAddress);
+ Assert.Fail();
+ }
+ catch (ArgumentNullException ex)
+ {
+ Assert.IsNull(ex.InnerException);
+ Assert.AreEqual("hostNameOrAddress", ex.ParamName);
+ }
+ }
+
+ [TestMethod]
+ public void ShouldThrowSocketExceptionWhenHostIsNotFound()
+ {
+ const string hostNameOrAddress = "surelydoesnotexist.OrAmIWrong";
+
+ try
+ {
+ var addresses = DnsAbstraction.GetHostAddresses(hostNameOrAddress);
+ Assert.Fail(addresses.ToString());
+ }
+ catch (SocketException ex)
+ {
+ Assert.IsNull(ex.InnerException);
+ Assert.AreEqual(SocketError.HostNotFound, ex.SocketErrorCode);
+ }
+ }
+
+ [TestMethod]
+ public void ShouldReturnHostAddressesOfLocalHostWhenHostNameOrAddressIsEmpty()
+ {
+ const string hostNameOrAddress = "";
+
+ var addresses = DnsAbstraction.GetHostAddresses(hostNameOrAddress);
+ Assert.IsNotNull(addresses);
+
+#if !SILVERLIGHT
+ var hostEntry = Dns.GetHostEntry(Dns.GetHostName());
+ Assert.IsNotNull(hostEntry);
+
+ Assert.AreEqual(hostEntry.AddressList.Length, addresses.Length);
+ for (var i = 0; i < hostEntry.AddressList.Length; i++)
+ Assert.AreEqual(hostEntry.AddressList[i], addresses[i]);
+#endif
+ }
+
+ [TestMethod]
+ public void ShouldReturnSingleIpv4AddressWhenHostNameOrAddressIsValidIpv4Address()
+ {
+ const string hostNameOrAddress = "1.2.3.4";
+
+ var addresses = DnsAbstraction.GetHostAddresses(hostNameOrAddress);
+ Assert.IsNotNull(addresses);
+ Assert.AreEqual(1, addresses.Length);
+ Assert.AreEqual(AddressFamily.InterNetwork, addresses[0].AddressFamily);
+ Assert.AreEqual(IPAddress.Parse(hostNameOrAddress), addresses[0]);
+ }
+
+ [TestMethod]
+ public void ShouldReturnSingleIpv6AddressWhenHostNameOrAddressIsValidIpv6Address()
+ {
+ const string hostNameOrAddress = "2001:0:9d38:90d7:384f:2133:ab3d:d152";
+
+ var addresses = DnsAbstraction.GetHostAddresses(hostNameOrAddress);
+ Assert.IsNotNull(addresses);
+ Assert.AreEqual(1, addresses.Length);
+ Assert.AreEqual(AddressFamily.InterNetworkV6, addresses[0].AddressFamily);
+ Assert.AreEqual(IPAddress.Parse(hostNameOrAddress), addresses[0]);
+ }
+ }
+}
diff --git a/test/Renci.SshNet.Shared.Tests/Abstractions/ThreadAbstraction_ExecuteThread.cs b/test/Renci.SshNet.Shared.Tests/Abstractions/ThreadAbstraction_ExecuteThread.cs
new file mode 100644
index 00000000..64d03caf
--- /dev/null
+++ b/test/Renci.SshNet.Shared.Tests/Abstractions/ThreadAbstraction_ExecuteThread.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Threading;
+#if SILVERLIGHT
+using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+#endif
+using Renci.SshNet.Abstractions;
+
+namespace Renci.SshNet.Tests.Abstractions
+{
+ [TestClass]
+ public class ThreadAbstraction_ExecuteThread
+ {
+ [TestMethod]
+ public void ShouldThrowArgumentNullExceptionWhenActionIsNull()
+ {
+ const Action action = null;
+
+ try
+ {
+ ThreadAbstraction.ExecuteThread(action);
+ Assert.Fail();
+ }
+ catch (ArgumentNullException ex)
+ {
+ Assert.IsNull(ex.InnerException);
+ Assert.AreEqual("action", ex.ParamName);
+ }
+ }
+
+ [TestMethod]
+ public void ShouldExecuteActionOnSeparateThread()
+ {
+ DateTime? executionTime = null;
+ int executionCount = 0;
+ EventWaitHandle waitHandle = new ManualResetEvent(false);
+
+ Action action = () =>
+ {
+ ThreadAbstraction.Sleep(500);
+ executionCount++;
+ executionTime = DateTime.Now;
+ waitHandle.Set();
+ };
+
+ DateTime start = DateTime.Now;
+
+ ThreadAbstraction.ExecuteThread(action);
+
+ Assert.AreEqual(0, executionCount);
+ Assert.IsNull(executionTime);
+
+ Assert.IsTrue(waitHandle.WaitOne(2000));
+
+ Assert.AreEqual(1, executionCount);
+ Assert.IsNotNull(executionTime);
+
+ var elapsedTime = executionTime.Value - start;
+ Assert.IsTrue(elapsedTime > TimeSpan.Zero);
+ Assert.IsTrue(elapsedTime > TimeSpan.FromMilliseconds(500));
+ Assert.IsTrue(elapsedTime < TimeSpan.FromMilliseconds(1000));
+ }
+ }
+}
diff --git a/test/Renci.SshNet.Shared.Tests/Renci.SshNet.Shared.Tests.projitems b/test/Renci.SshNet.Shared.Tests/Renci.SshNet.Shared.Tests.projitems
new file mode 100644
index 00000000..d1a3ff4c
--- /dev/null
+++ b/test/Renci.SshNet.Shared.Tests/Renci.SshNet.Shared.Tests.projitems
@@ -0,0 +1,15 @@
+
+
+
+ $(MSBuildAllProjects);$(MSBuildThisFileFullPath)
+ true
+ fae3948f-a438-458e-8e0e-7f6e39a5dd8a
+
+
+ Renci.SshNet.Tests
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/Renci.SshNet.Shared.Tests/Renci.SshNet.Shared.Tests.shproj b/test/Renci.SshNet.Shared.Tests/Renci.SshNet.Shared.Tests.shproj
new file mode 100644
index 00000000..72088027
--- /dev/null
+++ b/test/Renci.SshNet.Shared.Tests/Renci.SshNet.Shared.Tests.shproj
@@ -0,0 +1,13 @@
+
+
+
+ fae3948f-a438-458e-8e0e-7f6e39a5dd8a
+ 14.0
+
+
+
+
+
+
+
+
diff --git a/test/Renci.SshNet.WindowsPhone8.Tests/App.xaml b/test/Renci.SshNet.WindowsPhone8.Tests/App.xaml
new file mode 100644
index 00000000..0ce73407
--- /dev/null
+++ b/test/Renci.SshNet.WindowsPhone8.Tests/App.xaml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/Renci.SshNet.WindowsPhone8.Tests/App.xaml.cs b/test/Renci.SshNet.WindowsPhone8.Tests/App.xaml.cs
new file mode 100644
index 00000000..771bdf25
--- /dev/null
+++ b/test/Renci.SshNet.WindowsPhone8.Tests/App.xaml.cs
@@ -0,0 +1,222 @@
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Markup;
+using System.Windows.Navigation;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Shell;
+using Renci.SshNet.Tests.Resources;
+
+namespace Renci.SshNet.Tests
+{
+ public partial class App : Application
+ {
+ ///
+ /// Provides easy access to the root frame of the Phone Application.
+ ///
+ /// The root frame of the Phone Application.
+ public static PhoneApplicationFrame RootFrame { get; private set; }
+
+ ///
+ /// Constructor for the Application object.
+ ///
+ public App()
+ {
+ // Global handler for uncaught exceptions.
+ UnhandledException += Application_UnhandledException;
+
+ // Standard XAML initialization
+ InitializeComponent();
+
+ // Phone-specific initialization
+ InitializePhoneApplication();
+
+ // Language display initialization
+ InitializeLanguage();
+
+ // Show graphics profiling information while debugging.
+ if (Debugger.IsAttached)
+ {
+ // Display the current frame rate counters.
+ Application.Current.Host.Settings.EnableFrameRateCounter = true;
+
+ // Show the areas of the app that are being redrawn in each frame.
+ //Application.Current.Host.Settings.EnableRedrawRegions = true;
+
+ // Enable non-production analysis visualization mode,
+ // which shows areas of a page that are handed off to GPU with a colored overlay.
+ //Application.Current.Host.Settings.EnableCacheVisualization = true;
+
+ // Prevent the screen from turning off while under the debugger by disabling
+ // the application's idle detection.
+ // Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run
+ // and consume battery power when the user is not using the phone.
+ PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
+ }
+
+ }
+
+ // Code to execute when the application is launching (eg, from Start)
+ // This code will not execute when the application is reactivated
+ private void Application_Launching(object sender, LaunchingEventArgs e)
+ {
+ }
+
+ // Code to execute when the application is activated (brought to foreground)
+ // This code will not execute when the application is first launched
+ private void Application_Activated(object sender, ActivatedEventArgs e)
+ {
+ }
+
+ // Code to execute when the application is deactivated (sent to background)
+ // This code will not execute when the application is closing
+ private void Application_Deactivated(object sender, DeactivatedEventArgs e)
+ {
+ }
+
+ // Code to execute when the application is closing (eg, user hit Back)
+ // This code will not execute when the application is deactivated
+ private void Application_Closing(object sender, ClosingEventArgs e)
+ {
+ }
+
+ // Code to execute if a navigation fails
+ private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
+ {
+ if (Debugger.IsAttached)
+ {
+ // A navigation has failed; break into the debugger
+ Debugger.Break();
+ }
+ }
+
+ // Code to execute on Unhandled Exceptions
+ private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
+ {
+ if (Debugger.IsAttached)
+ {
+ // An unhandled exception has occurred; break into the debugger
+ Debugger.Break();
+ }
+ }
+
+ #region Phone application initialization
+
+ // Avoid double-initialization
+ private bool phoneApplicationInitialized = false;
+
+ // Do not add any additional code to this method
+ private void InitializePhoneApplication()
+ {
+ if (phoneApplicationInitialized)
+ return;
+
+ // Create the frame but don't set it as RootVisual yet; this allows the splash
+ // screen to remain active until the application is ready to render.
+ RootFrame = new PhoneApplicationFrame();
+ RootFrame.Navigated += CompleteInitializePhoneApplication;
+
+ // Handle navigation failures
+ RootFrame.NavigationFailed += RootFrame_NavigationFailed;
+
+ // Handle reset requests for clearing the backstack
+ RootFrame.Navigated += CheckForResetNavigation;
+
+ // Ensure we don't initialize again
+ phoneApplicationInitialized = true;
+ }
+
+ // Do not add any additional code to this method
+ private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
+ {
+ // Set the root visual to allow the application to render
+ if (RootVisual != RootFrame)
+ RootVisual = RootFrame;
+
+ // Remove this handler since it is no longer needed
+ RootFrame.Navigated -= CompleteInitializePhoneApplication;
+ }
+
+ private void CheckForResetNavigation(object sender, NavigationEventArgs e)
+ {
+ // If the app has received a 'reset' navigation, then we need to check
+ // on the next navigation to see if the page stack should be reset
+ if (e.NavigationMode == NavigationMode.Reset)
+ RootFrame.Navigated += ClearBackStackAfterReset;
+ }
+
+ private void ClearBackStackAfterReset(object sender, NavigationEventArgs e)
+ {
+ // Unregister the event so it doesn't get called again
+ RootFrame.Navigated -= ClearBackStackAfterReset;
+
+ // Only clear the stack for 'new' (forward) and 'refresh' navigations
+ if (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh)
+ return;
+
+ // For UI consistency, clear the entire page stack
+ while (RootFrame.RemoveBackEntry() != null)
+ {
+ ; // do nothing
+ }
+ }
+
+ #endregion
+
+ // Initialize the app's font and flow direction as defined in its localized resource strings.
+ //
+ // To ensure that the font of your application is aligned with its supported languages and that the
+ // FlowDirection for each of those languages follows its traditional direction, ResourceLanguage
+ // and ResourceFlowDirection should be initialized in each resx file to match these values with that
+ // file's culture. For example:
+ //
+ // AppResources.es-ES.resx
+ // ResourceLanguage's value should be "es-ES"
+ // ResourceFlowDirection's value should be "LeftToRight"
+ //
+ // AppResources.ar-SA.resx
+ // ResourceLanguage's value should be "ar-SA"
+ // ResourceFlowDirection's value should be "RightToLeft"
+ //
+ // For more info on localizing Windows Phone apps see http://go.microsoft.com/fwlink/?LinkId=262072.
+ //
+ private void InitializeLanguage()
+ {
+ try
+ {
+ // Set the font to match the display language defined by the
+ // ResourceLanguage resource string for each supported language.
+ //
+ // Fall back to the font of the neutral language if the Display
+ // language of the phone is not supported.
+ //
+ // If a compiler error is hit then ResourceLanguage is missing from
+ // the resource file.
+ RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage);
+
+ // Set the FlowDirection of all elements under the root frame based
+ // on the ResourceFlowDirection resource string for each
+ // supported language.
+ //
+ // If a compiler error is hit then ResourceFlowDirection is missing from
+ // the resource file.
+ FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection);
+ RootFrame.FlowDirection = flow;
+ }
+ catch
+ {
+ // If an exception is caught here it is most likely due to either
+ // ResourceLangauge not being correctly set to a supported language
+ // code or ResourceFlowDirection is set to a value other than LeftToRight
+ // or RightToLeft.
+
+ if (Debugger.IsAttached)
+ {
+ Debugger.Break();
+ }
+
+ throw;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/Renci.SshNet.WindowsPhone8.Tests/Assets/AlignmentGrid.png b/test/Renci.SshNet.WindowsPhone8.Tests/Assets/AlignmentGrid.png
new file mode 100644
index 00000000..f7d2e978
Binary files /dev/null and b/test/Renci.SshNet.WindowsPhone8.Tests/Assets/AlignmentGrid.png differ
diff --git a/test/Renci.SshNet.WindowsPhone8.Tests/Assets/ApplicationIcon.png b/test/Renci.SshNet.WindowsPhone8.Tests/Assets/ApplicationIcon.png
new file mode 100644
index 00000000..7d95d4e0
Binary files /dev/null and b/test/Renci.SshNet.WindowsPhone8.Tests/Assets/ApplicationIcon.png differ
diff --git a/test/Renci.SshNet.WindowsPhone8.Tests/Assets/Tiles/FlipCycleTileLarge.png b/test/Renci.SshNet.WindowsPhone8.Tests/Assets/Tiles/FlipCycleTileLarge.png
new file mode 100644
index 00000000..e0c59ac0
Binary files /dev/null and b/test/Renci.SshNet.WindowsPhone8.Tests/Assets/Tiles/FlipCycleTileLarge.png differ
diff --git a/test/Renci.SshNet.WindowsPhone8.Tests/Assets/Tiles/FlipCycleTileMedium.png b/test/Renci.SshNet.WindowsPhone8.Tests/Assets/Tiles/FlipCycleTileMedium.png
new file mode 100644
index 00000000..e93b89d6
Binary files /dev/null and b/test/Renci.SshNet.WindowsPhone8.Tests/Assets/Tiles/FlipCycleTileMedium.png differ
diff --git a/test/Renci.SshNet.WindowsPhone8.Tests/Assets/Tiles/FlipCycleTileSmall.png b/test/Renci.SshNet.WindowsPhone8.Tests/Assets/Tiles/FlipCycleTileSmall.png
new file mode 100644
index 00000000..550b1b5e
Binary files /dev/null and b/test/Renci.SshNet.WindowsPhone8.Tests/Assets/Tiles/FlipCycleTileSmall.png differ
diff --git a/test/Renci.SshNet.WindowsPhone8.Tests/LocalizedStrings.cs b/test/Renci.SshNet.WindowsPhone8.Tests/LocalizedStrings.cs
new file mode 100644
index 00000000..91050cf4
--- /dev/null
+++ b/test/Renci.SshNet.WindowsPhone8.Tests/LocalizedStrings.cs
@@ -0,0 +1,14 @@
+using Renci.SshNet.Tests.Resources;
+
+namespace Renci.SshNet.Tests
+{
+ ///
+ /// Provides access to string resources.
+ ///
+ public class LocalizedStrings
+ {
+ private static AppResources _localizedResources = new AppResources();
+
+ public AppResources LocalizedResources { get { return _localizedResources; } }
+ }
+}
\ No newline at end of file
diff --git a/test/Renci.SshNet.WindowsPhone8.Tests/MainPage.xaml b/test/Renci.SshNet.WindowsPhone8.Tests/MainPage.xaml
new file mode 100644
index 00000000..4da3c91e
--- /dev/null
+++ b/test/Renci.SshNet.WindowsPhone8.Tests/MainPage.xaml
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/Renci.SshNet.WindowsPhone8.Tests/MainPage.xaml.cs b/test/Renci.SshNet.WindowsPhone8.Tests/MainPage.xaml.cs
new file mode 100644
index 00000000..ce08790e
--- /dev/null
+++ b/test/Renci.SshNet.WindowsPhone8.Tests/MainPage.xaml.cs
@@ -0,0 +1,21 @@
+using System.Threading;
+using Microsoft.Phone.Controls;
+using Microsoft.VisualStudio.TestPlatform.Core;
+using Microsoft.VisualStudio.TestPlatform.TestExecutor;
+using vstest_executionengine_platformbridge;
+
+namespace Renci.SshNet.Tests
+{
+ public partial class MainPage : PhoneApplicationPage
+ {
+ // Constructor
+ public MainPage()
+ {
+ InitializeComponent();
+
+ var wrapper = new TestExecutorServiceWrapper();
+ new Thread(new ServiceMain((param0, param1) => wrapper.SendMessage((ContractName)param0, param1)).Run).Start();
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/Renci.SshNet.WindowsPhone8.Tests/Properties/AppManifest.xml b/test/Renci.SshNet.WindowsPhone8.Tests/Properties/AppManifest.xml
new file mode 100644
index 00000000..6712a117
--- /dev/null
+++ b/test/Renci.SshNet.WindowsPhone8.Tests/Properties/AppManifest.xml
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/test/Renci.SshNet.WindowsPhone8.Tests/Properties/AssemblyInfo.cs b/test/Renci.SshNet.WindowsPhone8.Tests/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..c9bbc102
--- /dev/null
+++ b/test/Renci.SshNet.WindowsPhone8.Tests/Properties/AssemblyInfo.cs
@@ -0,0 +1,37 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Resources;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Renci.SshNet.WindowsPhone8.Tests")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Renci.SshNet.WindowsPhone8.Tests")]
+[assembly: AssemblyCopyright("Copyright © 2016")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("911d635c-6e0e-46e8-9e8b-99bfb1790991")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: NeutralResourcesLanguageAttribute("en-US")]
diff --git a/test/Renci.SshNet.WindowsPhone8.Tests/Properties/WMAppManifest.xml b/test/Renci.SshNet.WindowsPhone8.Tests/Properties/WMAppManifest.xml
new file mode 100644
index 00000000..1590bfd8
--- /dev/null
+++ b/test/Renci.SshNet.WindowsPhone8.Tests/Properties/WMAppManifest.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+ Assets\ApplicationIcon.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Assets\Tiles\FlipCycleTileSmall.png
+ 0
+ Assets\Tiles\FlipCycleTileMedium.png
+ Renci.SshNet.WindowsPhone8.Tests
+
+
+
+
+
+
+
+
+
+
+ vstest_executionengine_platformbridge.dll
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/Renci.SshNet.WindowsPhone8.Tests/Renci.SshNet.WindowsPhone8.Tests.csproj b/test/Renci.SshNet.WindowsPhone8.Tests/Renci.SshNet.WindowsPhone8.Tests.csproj
new file mode 100644
index 00000000..defcfa14
--- /dev/null
+++ b/test/Renci.SshNet.WindowsPhone8.Tests/Renci.SshNet.WindowsPhone8.Tests.csproj
@@ -0,0 +1,149 @@
+
+
+
+ Debug
+ x86
+ 10.0.20506
+ 2.0
+ {26F0D644-B3EF-47DF-8040-E9E4B2E63884}
+ {C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
+ Library
+ Properties
+ Renci.SshNet.Tests
+ Renci.SshNet.Tests
+ WindowsPhone
+ v8.0
+ $(TargetFrameworkVersion)
+ true
+ true
+
+
+ true
+ true
+ Renci.SshNet.WindowsPhone8.Tests_$(Configuration)_$(Platform).xap
+ Properties\AppManifest.xml
+ Renci.SshNet.WindowsPhone8.Tests.App
+ false
+ 11.0
+ true
+
+
+ true
+ full
+ false
+ Bin\x86\Debug
+ DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE
+ true
+ true
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ Bin\x86\Release
+ TRACE;SILVERLIGHT;WINDOWS_PHONE
+ true
+ true
+ prompt
+ 4
+
+
+ true
+ full
+ false
+ Bin\ARM\Debug
+ DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE
+ true
+ true
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ Bin\ARM\Release
+ TRACE;SILVERLIGHT;WINDOWS_PHONE
+ true
+ true
+ prompt
+ 4
+
+
+
+ App.xaml
+
+
+
+
+ MainPage.xaml
+
+
+
+ True
+ True
+ AppResources.resx
+
+
+
+
+ Designer
+ MSBuild:Compile
+
+
+ Designer
+ MSBuild:Compile
+
+
+
+
+
+ Designer
+
+
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+
+
+ PublicResXFileCodeGenerator
+ AppResources.Designer.cs
+
+
+
+
+
+
+
+ {4a6ca785-1c8a-47fe-98c0-30c675a9328b}
+ Renci.SshNet.WindowsPhone8
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/Renci.SshNet.WindowsPhone8.Tests/Resources/AppResources.Designer.cs b/test/Renci.SshNet.WindowsPhone8.Tests/Resources/AppResources.Designer.cs
new file mode 100644
index 00000000..d4a8eaf7
--- /dev/null
+++ b/test/Renci.SshNet.WindowsPhone8.Tests/Resources/AppResources.Designer.cs
@@ -0,0 +1,108 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Renci.SshNet.Tests.Resources {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ public class AppResources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal AppResources() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ public static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Renci.SshNet.Tests.Resources.AppResources", typeof(AppResources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ public static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to add.
+ ///
+ public static string AppBarButtonText {
+ get {
+ return ResourceManager.GetString("AppBarButtonText", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Menu Item.
+ ///
+ public static string AppBarMenuItemText {
+ get {
+ return ResourceManager.GetString("AppBarMenuItemText", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to MY APPLICATION.
+ ///
+ public static string ApplicationTitle {
+ get {
+ return ResourceManager.GetString("ApplicationTitle", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to LeftToRight.
+ ///
+ public static string ResourceFlowDirection {
+ get {
+ return ResourceManager.GetString("ResourceFlowDirection", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to en-US.
+ ///
+ public static string ResourceLanguage {
+ get {
+ return ResourceManager.GetString("ResourceLanguage", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/test/Renci.SshNet.WindowsPhone8.Tests/Resources/AppResources.resx b/test/Renci.SshNet.WindowsPhone8.Tests/Resources/AppResources.resx
new file mode 100644
index 00000000..529a1943
--- /dev/null
+++ b/test/Renci.SshNet.WindowsPhone8.Tests/Resources/AppResources.resx
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ LeftToRight
+ Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language
+
+
+ en-US
+ Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.
+
+
+ MY APPLICATION
+
+
+ add
+
+
+ Menu Item
+
+
\ No newline at end of file