Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Windows Phone 7.1 unit test support

  • Loading branch information...
commit 2a89386de6afed62e1ef6a6c5973e475bce4b04f 1 parent b01245a
@jkowalski jkowalski authored
Showing with 422 additions and 232 deletions.
  1. +11 −0 external/SilverlightUnitTestFramework/WP71/LICENSE.txt
  2. BIN  external/SilverlightUnitTestFramework/WP71/Microsoft.Silverlight.Testing.dll
  3. BIN  external/SilverlightUnitTestFramework/WP71/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll
  4. +12 −0 src/NLog.proj
  5. +0 −8 src/NLog.wp71.sln
  6. +42 −22 tests/NLog.UnitTests/App.xaml.cs
  7. +0 −3  tests/NLog.UnitTests/NLog.UnitTests.monodevelop.csproj
  8. +0 −3  tests/NLog.UnitTests/NLog.UnitTests.netcf20.csproj
  9. +0 −3  tests/NLog.UnitTests/NLog.UnitTests.netcf35.csproj
  10. +0 −3  tests/NLog.UnitTests/NLog.UnitTests.netfx20.csproj
  11. +0 −3  tests/NLog.UnitTests/NLog.UnitTests.netfx35.csproj
  12. +2 −7 tests/NLog.UnitTests/NLog.UnitTests.netfx40.csproj
  13. +0 −3  tests/NLog.UnitTests/NLog.UnitTests.sl2.csproj
  14. +0 −3  tests/NLog.UnitTests/NLog.UnitTests.sl3.csproj
  15. +0 −3  tests/NLog.UnitTests/NLog.UnitTests.sl4.csproj
  16. +9 −3 tests/NLog.UnitTests/NLog.UnitTests.wp7.csproj
  17. +11 −5 tests/NLog.UnitTests/NLog.UnitTests.wp71.csproj
  18. +10 −1 tests/NLog.UnitTests/ProjectFileInfo.xml
  19. +63 −20 tests/SilverlightConsoleRunner/ConsoleRunner.cs
  20. +0 −14 tests/SilverlightConsoleRunner/LogEventArgs.cs
  21. +53 −66 tests/SilverlightConsoleRunner/MicroHttpServer.cs
  22. +20 −7 tests/SilverlightConsoleRunner/Program.cs
  23. +0 −44 tests/SilverlightConsoleRunner/RunnerForm.cs
  24. +5 −2 tests/SilverlightConsoleRunner/SilverlightConsoleRunner.csproj
  25. +20 −0 tests/SilverlightConsoleRunner/SilverlightConsoleRunner.sln
  26. +0 −9 tests/SilverlightConsoleRunner/TestCompletedEventArgs.cs
  27. BIN  tools/RunXap.dll
  28. +49 −0 tools/RunXap/Program.cs
  29. +36 −0 tools/RunXap/Properties/AssemblyInfo.cs
  30. +59 −0 tools/RunXap/RunXap.csproj
  31. +20 −0 tools/RunXap/RunXap.sln
View
11 external/SilverlightUnitTestFramework/WP71/LICENSE.txt
@@ -0,0 +1,11 @@
+MSDN CODE GALLERY BINARY LICENSE
+
+You are free to install, use, copy and distribute any number of copies of the software, in object code form, provided that you retain:
+
+� all copyright, patent, trademark, and attribution notices that are present in the software,
+� this list of conditions, and
+� the following disclaimer in the documentation and/or other materials provided with the software.
+
+The software is licensed �as-is.� You bear the risk of using it. No express warranties, guarantees or conditions are provided. To the extent permitted under your local laws, the implied warranties of merchantability, fitness for a particular purpose and non-infringement are excluded.
+
+This license does not grant you any rights to use any other party�s name, logo, or trademarks. All rights not specifically granted herein are reserved.
View
BIN  external/SilverlightUnitTestFramework/WP71/Microsoft.Silverlight.Testing.dll
Binary file not shown
View
BIN  external/SilverlightUnitTestFramework/WP71/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll
Binary file not shown
View
12 src/NLog.proj
@@ -271,6 +271,8 @@
<CallTarget Targets="SL2Test" Condition="'$(BuildSL2)'=='true'"/>
<CallTarget Targets="SL3Test" Condition="'$(BuildSL3)'=='true'"/>
<CallTarget Targets="SL4Test" Condition="'$(BuildSL4)'=='true'"/>
+ <CallTarget Targets="WP7Test" Condition="'$(BuildWP7)'=='true'"/>
+ <CallTarget Targets="WP71Test" Condition="'$(BuildWP71)'=='true'"/>
<CallTarget Targets="RunComApiTests" />
<Exec Command="..\tests\DeleteTestUsers.cmd" IgnoreExitCode="true" />
</Target>
@@ -334,6 +336,16 @@
WorkingDirectory="$(BaseOutputDirectory)\bin\$(Configuration)\Silverlight 4.0" IgnoreExitCode="true" />
</Target>
+ <Target Name="WP7Test" DependsOnTargets="BuildSLTestRunner">
+ <Exec Command='"$(SLTestRunner)" NLog.UnitTests.xap WP7 -guid 3cf9fab9-588c-49c8-8a45-ef071442304f -icon ApplicationIcon.png'
+ WorkingDirectory="$(BaseOutputDirectory)\bin\$(Configuration)\Silverlight for Windows Phone 7" IgnoreExitCode="true" />
+ </Target>
+
+ <Target Name="WP71Test" DependsOnTargets="BuildSLTestRunner">
+ <Exec Command='"$(SLTestRunner)" NLog.UnitTests.xap WP71 -guid 3cf9fab9-588c-49c8-8a45-ef071442304f -icon ApplicationIcon.png'
+ WorkingDirectory="$(BaseOutputDirectory)\bin\$(Configuration)\Silverlight for Windows Phone 7.1" IgnoreExitCode="true" />
+ </Target>
+
<Target Name="CheckinSuite">
<CallTarget Targets="SyncProjectItems" />
<CallTarget Targets="DeepClean" />
View
8 src/NLog.wp71.sln
@@ -7,8 +7,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NLog.UnitTests.wp71", "..\t
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleExtensions.wp71", "..\tests\SampleExtensions\SampleExtensions.wp71.csproj", "{8A0E38D3-1512-45B0-A360-218F7E98743D}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NLogWindowsPhoneApplication", "..\examples\NLogWindowsPhoneApplication\NLogWindowsPhoneApplication.csproj", "{17F2F126-6945-48A0-900F-A0859A3F1A0D}"
-EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -28,12 +26,6 @@ Global
{8A0E38D3-1512-45B0-A360-218F7E98743D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8A0E38D3-1512-45B0-A360-218F7E98743D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8A0E38D3-1512-45B0-A360-218F7E98743D}.Release|Any CPU.Build.0 = Release|Any CPU
- {17F2F126-6945-48A0-900F-A0859A3F1A0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {17F2F126-6945-48A0-900F-A0859A3F1A0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {17F2F126-6945-48A0-900F-A0859A3F1A0D}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
- {17F2F126-6945-48A0-900F-A0859A3F1A0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {17F2F126-6945-48A0-900F-A0859A3F1A0D}.Release|Any CPU.Build.0 = Release|Any CPU
- {17F2F126-6945-48A0-900F-A0859A3F1A0D}.Release|Any CPU.Deploy.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
View
64 tests/NLog.UnitTests/App.xaml.cs
@@ -46,9 +46,15 @@
namespace NLog.UnitTests
{
+ using System.Net;
+ using System.Text;
+ using System.Xml.Linq;
+ using Microsoft.Silverlight.Testing.UnitTesting.Metadata.VisualStudio;
+
public partial class App : Application
{
private VisualStudioLogProvider vsProvider = new VisualStudioLogProvider();
+ private static Uri baseUrl = new Uri("http://localhost:17788");
public App()
{
@@ -63,17 +69,41 @@ class MyLogProvider : LogProvider
{
public override void Process(LogMessage logMessage)
{
+ if (logMessage.HasDecorator(LogDecorator.TestStage))
+ {
+ var stage = (TestStage)logMessage[LogDecorator.TestStage];
+ if (stage == TestStage.Starting)
+ {
+ if (logMessage.HasDecorator(UnitTestLogDecorator.TestMethodMetadata))
+ {
+ var methodInfo = (TestMethod)logMessage[UnitTestLogDecorator.TestMethodMetadata];
+ var wc = new WebClient();
+ wc.UploadStringAsync(new Uri(baseUrl, "/TestMethodStarting?method=" + methodInfo.Name), "");
+ }
+ else if (logMessage.HasDecorator(UnitTestLogDecorator.TestClassMetadata))
+ {
+ var classInfo = (TestClass)logMessage[UnitTestLogDecorator.TestClassMetadata];
+ var wc = new WebClient();
+ wc.UploadStringAsync(new Uri(baseUrl, "/TestClassStarting?class=" + classInfo.Type.FullName), "");
+ }
+ }
+ }
+
if (logMessage.HasDecorator(UnitTestLogDecorator.ScenarioResult))
{
var result = (ScenarioResult)logMessage[UnitTestLogDecorator.ScenarioResult];
-
- InvokeDomMethod("scenarioResult",
- result.Started.Ticks,
- result.Finished.Ticks,
- (result.TestClass != null) ? result.TestClass.Type.FullName : null,
- (result.TestMethod != null) ? result.TestMethod.Name : null,
- result.Result.ToString(),
- (result.Exception != null) ? result.Exception.ToString() : null);
+ var wc = new WebClient();
+ StringBuilder uri = new StringBuilder();
+ uri.Append("/TestMethodCompleted?result=" + result.Result);
+ if (result.TestClass != null)
+ {
+ uri.Append("&class=").Append(result.TestClass.Type.FullName);
+ }
+ if (result.TestMethod != null)
+ {
+ uri.Append("&method=").Append(result.TestMethod.Name);
+ }
+ wc.UploadStringAsync(new Uri(baseUrl, uri.ToString()), "");
}
}
}
@@ -106,7 +136,9 @@ void TestHarness_TestHarnessCompleted(object sender, TestHarnessCompletedEventAr
var harness = new MyHarness();
vsProvider.WriteLogFile(harness);
- InvokeDomMethod("testCompleted", harness.TrxContent);
+
+ var wc = new WebClient();
+ wc.UploadStringAsync(new Uri(baseUrl, "/Completed"), harness.TrxContent);
}
private void Application_Exit(object sender, EventArgs e)
@@ -115,6 +147,7 @@ private void Application_Exit(object sender, EventArgs e)
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
+ MessageBox.Show(e.ExceptionObject.ToString());
// If the app is running outside of the debugger then report the exception using
// the browser's exception mechanism. On IE this will display it a yellow alert
// icon in the status bar and Firefox will display a script error.
@@ -147,19 +180,6 @@ private void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)
{
}
}
-
- private static void InvokeDomMethod(string methodName, params object[] arguments)
- {
- try
- {
-#if !WINDOWS_PHONE
- HtmlPage.Window.Invoke(methodName, arguments);
-#endif
- }
- catch
- {
- }
- }
}
}
View
3  tests/NLog.UnitTests/NLog.UnitTests.monodevelop.csproj
@@ -156,8 +156,6 @@
<Compile Include="Targets\Wrappers\WrapperTargetBaseTests.cs" />
</ItemGroup>
<ItemGroup>
- <Content Include="ApplicationIcon.png" />
- <Content Include="Background.png" />
<Content Include="ConfigFiles\included.nlog" />
<Content Include="ConfigFiles\main.nlog" />
<Content Include="ConfigFiles\referencemissingfile.nlog" />
@@ -166,7 +164,6 @@
<Content Include="Properties\AppManifest.xml" />
<Content Include="Properties\OutOfBrowserSettings.xml" />
<Content Include="Properties\WMAppManifest.xml" />
- <Content Include="SplashScreenImage.jpg" />
</ItemGroup>
<ItemGroup>
<None Include="NLogTests.snk" />
View
3  tests/NLog.UnitTests/NLog.UnitTests.netcf20.csproj
@@ -165,8 +165,6 @@
<None Include="NLogTests.snk" />
</ItemGroup>
<ItemGroup>
- <Content Include="ApplicationIcon.png" />
- <Content Include="Background.png" />
<Content Include="ConfigFiles\included.nlog" />
<Content Include="ConfigFiles\main.nlog" />
<Content Include="ConfigFiles\referencemissingfile.nlog" />
@@ -175,7 +173,6 @@
<Content Include="Properties\AppManifest.xml" />
<Content Include="Properties\OutOfBrowserSettings.xml" />
<Content Include="Properties\WMAppManifest.xml" />
- <Content Include="SplashScreenImage.jpg" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\NLog\NLog.netcf20.csproj">
View
3  tests/NLog.UnitTests/NLog.UnitTests.netcf35.csproj
@@ -160,8 +160,6 @@
<Compile Include="Targets\Wrappers\WrapperTargetBaseTests.cs" />
</ItemGroup>
<ItemGroup>
- <Content Include="ApplicationIcon.png" />
- <Content Include="Background.png" />
<Content Include="ConfigFiles\included.nlog" />
<Content Include="ConfigFiles\main.nlog" />
<Content Include="ConfigFiles\referencemissingfile.nlog" />
@@ -170,7 +168,6 @@
<Content Include="Properties\AppManifest.xml" />
<Content Include="Properties\OutOfBrowserSettings.xml" />
<Content Include="Properties\WMAppManifest.xml" />
- <Content Include="SplashScreenImage.jpg" />
</ItemGroup>
<ItemGroup>
<None Include="NLogTests.snk" />
View
3  tests/NLog.UnitTests/NLog.UnitTests.netfx20.csproj
@@ -160,8 +160,6 @@
<Compile Include="Targets\Wrappers\WrapperTargetBaseTests.cs" />
</ItemGroup>
<ItemGroup>
- <Content Include="ApplicationIcon.png" />
- <Content Include="Background.png" />
<Content Include="ConfigFiles\included.nlog" />
<Content Include="ConfigFiles\main.nlog" />
<Content Include="ConfigFiles\referencemissingfile.nlog" />
@@ -170,7 +168,6 @@
<Content Include="Properties\AppManifest.xml" />
<Content Include="Properties\OutOfBrowserSettings.xml" />
<Content Include="Properties\WMAppManifest.xml" />
- <Content Include="SplashScreenImage.jpg" />
</ItemGroup>
<ItemGroup>
<None Include="NLogTests.snk" />
View
3  tests/NLog.UnitTests/NLog.UnitTests.netfx35.csproj
@@ -162,8 +162,6 @@
<Compile Include="Targets\Wrappers\WrapperTargetBaseTests.cs" />
</ItemGroup>
<ItemGroup>
- <Content Include="ApplicationIcon.png" />
- <Content Include="Background.png" />
<Content Include="ConfigFiles\included.nlog" />
<Content Include="ConfigFiles\main.nlog" />
<Content Include="ConfigFiles\referencemissingfile.nlog" />
@@ -172,7 +170,6 @@
<Content Include="Properties\AppManifest.xml" />
<Content Include="Properties\OutOfBrowserSettings.xml" />
<Content Include="Properties\WMAppManifest.xml" />
- <Content Include="SplashScreenImage.jpg" />
</ItemGroup>
<ItemGroup>
<None Include="NLogTests.snk" />
View
9 tests/NLog.UnitTests/NLog.UnitTests.netfx40.csproj
@@ -9,10 +9,8 @@
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
- <ApplicationIcon>
- </ApplicationIcon>
- <AssemblyKeyContainerName>
- </AssemblyKeyContainerName>
+ <ApplicationIcon></ApplicationIcon>
+ <AssemblyKeyContainerName></AssemblyKeyContainerName>
<AssemblyName>NLog.UnitTests</AssemblyName>
<AssemblyOriginatorKeyFile>NLogTests.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
@@ -161,8 +159,6 @@
<Compile Include="Targets\Wrappers\WrapperTargetBaseTests.cs" />
</ItemGroup>
<ItemGroup>
- <Content Include="ApplicationIcon.png" />
- <Content Include="Background.png" />
<Content Include="ConfigFiles\included.nlog" />
<Content Include="ConfigFiles\main.nlog" />
<Content Include="ConfigFiles\referencemissingfile.nlog" />
@@ -171,7 +167,6 @@
<Content Include="Properties\AppManifest.xml" />
<Content Include="Properties\OutOfBrowserSettings.xml" />
<Content Include="Properties\WMAppManifest.xml" />
- <Content Include="SplashScreenImage.jpg" />
</ItemGroup>
<ItemGroup>
<None Include="NLogTests.snk" />
View
3  tests/NLog.UnitTests/NLog.UnitTests.sl2.csproj
@@ -208,8 +208,6 @@
<None Include="Properties\OutOfBrowserSettings.xml" />
</ItemGroup>
<ItemGroup>
- <Content Include="ApplicationIcon.png" />
- <Content Include="Background.png" />
<Content Include="ConfigFiles\included.nlog" />
<Content Include="ConfigFiles\main.nlog" />
<Content Include="ConfigFiles\referencemissingfile.nlog" />
@@ -218,7 +216,6 @@
<Content Include="Properties\AppManifest.xml" />
<Content Include="Properties\OutOfBrowserSettings.xml" />
<Content Include="Properties\WMAppManifest.xml" />
- <Content Include="SplashScreenImage.jpg" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\NLog\NLog.sl2.csproj">
View
3  tests/NLog.UnitTests/NLog.UnitTests.sl3.csproj
@@ -196,8 +196,6 @@
<None Include="Properties\OutOfBrowserSettings.xml" />
</ItemGroup>
<ItemGroup>
- <Content Include="ApplicationIcon.png" />
- <Content Include="Background.png" />
<Content Include="ConfigFiles\included.nlog" />
<Content Include="ConfigFiles\main.nlog" />
<Content Include="ConfigFiles\referencemissingfile.nlog" />
@@ -206,7 +204,6 @@
<Content Include="Properties\AppManifest.xml" />
<Content Include="Properties\OutOfBrowserSettings.xml" />
<Content Include="Properties\WMAppManifest.xml" />
- <Content Include="SplashScreenImage.jpg" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\NLog\NLog.sl3.csproj">
View
3  tests/NLog.UnitTests/NLog.UnitTests.sl4.csproj
@@ -190,8 +190,6 @@
</ApplicationDefinition>
</ItemGroup>
<ItemGroup>
- <Content Include="ApplicationIcon.png" />
- <Content Include="Background.png" />
<Content Include="ConfigFiles\included.nlog" />
<Content Include="ConfigFiles\main.nlog" />
<Content Include="ConfigFiles\referencemissingfile.nlog" />
@@ -200,7 +198,6 @@
<Content Include="Properties\AppManifest.xml" />
<Content Include="Properties\OutOfBrowserSettings.xml" />
<Content Include="Properties\WMAppManifest.xml" />
- <Content Include="SplashScreenImage.jpg" />
</ItemGroup>
<ItemGroup>
<Content Include="ConfigFiles\included.nlog" />
View
12 tests/NLog.UnitTests/NLog.UnitTests.wp7.csproj
@@ -182,8 +182,12 @@
</ApplicationDefinition>
</ItemGroup>
<ItemGroup>
- <Content Include="ApplicationIcon.png" />
- <Content Include="Background.png" />
+ <Content Include="ApplicationIcon.png">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
+ <Content Include="Background.png">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
<Content Include="ConfigFiles\included.nlog" />
<Content Include="ConfigFiles\main.nlog" />
<Content Include="ConfigFiles\referencemissingfile.nlog" />
@@ -192,7 +196,9 @@
<Content Include="Properties\AppManifest.xml" />
<Content Include="Properties\OutOfBrowserSettings.xml" />
<Content Include="Properties\WMAppManifest.xml" />
- <Content Include="SplashScreenImage.jpg" />
+ <Content Include="SplashScreenImage.jpg">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
</ItemGroup>
<ItemGroup>
<Content Include="ConfigFiles\included.nlog" />
View
16 tests/NLog.UnitTests/NLog.UnitTests.wp71.csproj
@@ -60,11 +60,11 @@
<ItemGroup>
<Reference Include="Microsoft.Silverlight.Testing, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
- <HintPath>..\..\external\SilverlightUnitTestFramework\WP7\Microsoft.Silverlight.Testing.dll</HintPath>
+ <HintPath>..\..\external\SilverlightUnitTestFramework\WP71\Microsoft.Silverlight.Testing.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
- <HintPath>..\..\external\SilverlightUnitTestFramework\WP7\Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll</HintPath>
+ <HintPath>..\..\external\SilverlightUnitTestFramework\WP71\Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll</HintPath>
</Reference>
<Reference Include="System.Windows" />
<Reference Include="mscorlib" />
@@ -182,8 +182,12 @@
</ApplicationDefinition>
</ItemGroup>
<ItemGroup>
- <Content Include="ApplicationIcon.png" />
- <Content Include="Background.png" />
+ <Content Include="ApplicationIcon.png">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
+ <Content Include="Background.png">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
<Content Include="ConfigFiles\included.nlog" />
<Content Include="ConfigFiles\main.nlog" />
<Content Include="ConfigFiles\referencemissingfile.nlog" />
@@ -192,7 +196,9 @@
<Content Include="Properties\AppManifest.xml" />
<Content Include="Properties\OutOfBrowserSettings.xml" />
<Content Include="Properties\WMAppManifest.xml" />
- <Content Include="SplashScreenImage.jpg" />
+ <Content Include="SplashScreenImage.jpg">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
</ItemGroup>
<ItemGroup>
<Content Include="ConfigFiles\included.nlog" />
View
11 tests/NLog.UnitTests/ProjectFileInfo.xml
@@ -13,11 +13,18 @@
<FileSet Name="AllContentFiles">
<Include File="*.nlog" />
- <Include File="*.png" />
<Include File="*.xml" />
+ </FileSet>
+
+ <FileSet Name="ContentFilesCopyToOutput">
+ <Include File="*.png" />
<Include File="*.jpg" />
</FileSet>
+ <Customize FileSet="ContentFilesCopyToOutput" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Customize>
+
<Project File="NLog.UnitTests.sl2.csproj">
<ItemGroup Name="Compile">
<FileSet Include="AllFilesToCompile" />
@@ -96,6 +103,7 @@
</ItemGroup>
<ItemGroup Name="Content">
<FileSet Include="AllContentFiles" />
+ <FileSet Include="ContentFilesCopyToOutput" />
</ItemGroup>
</Project>
@@ -105,6 +113,7 @@
</ItemGroup>
<ItemGroup Name="Content">
<FileSet Include="AllContentFiles" />
+ <FileSet Include="ContentFilesCopyToOutput" />
</ItemGroup>
</Project>
View
83 tests/SilverlightConsoleRunner/ConsoleRunner.cs
@@ -1,14 +1,25 @@
namespace SilverlightConsoleRunner
{
using System;
+ using System.Diagnostics;
using System.Globalization;
using System.IO;
+ using System.Net;
+ using System.Threading;
+ using System.Windows.Forms;
+ using RunXap;
public class ConsoleRunner
{
public int FailedCount = 0;
public int OtherCount = 0;
public int PassedCount = 0;
+ private Form currentForm;
+ private ManualResetEvent finished = new ManualResetEvent(false);
+ private string DevicePlatformName = "Windows Phone 7";
+ private string DeviceName = "Windows Phone Emulator";
+ public string IconFile { get; set; }
+ public Guid AppGuid { get; set; }
public string XapFile { get; set; }
public TextWriter LogWriter { get; set; }
@@ -26,6 +37,9 @@ public void Run()
{
using (var httpServer = new MicroHttpServer())
{
+ httpServer.AddHandler("/Completed", OnTestCompleted);
+ httpServer.AddHandler("/TestMethodCompleted", OnTestMethodCompleted);
+
switch (SilverlightVersion)
{
case "SL2":
@@ -43,6 +57,10 @@ public void Run()
httpServer.AddResourceHandler("/XapHost.html", "text/html", typeof(ConsoleRunner), "XapHost4.html");
break;
+ case "WP7":
+ case "WP71":
+ break;
+
default:
throw new NotSupportedException("Unsupported silverlight version: '" + SilverlightVersion + "'");
}
@@ -50,14 +68,27 @@ public void Run()
httpServer.AddFileHandler("/xapfile.xap", "application/x-silverlight-app", this.XapFile);
httpServer.Start();
- using (var form = new RunnerForm())
+ if (this.SilverlightVersion.StartsWith("SL"))
+ {
+ using (var form = new RunnerForm())
+ {
+ form.Url = "http://localhost:" + httpServer.ListenPort + "/XapHost.html";
+ this.currentForm = form;
+ form.ShowDialog();
+ this.currentForm = null;
+ }
+ }
+ else if (this.SilverlightVersion.StartsWith("WP"))
+ {
+ XapRunner.RunXap(this.XapFile, this.IconFile, this.AppGuid, this.DevicePlatformName, this.DeviceName);
+ }
+ else
{
- form.OnLogEvent += this.OnLogEvent;
- form.OnCompleted += this.OnCompleted;
- form.Url = "http://localhost:" + httpServer.ListenPort + "/XapHost.html";
- form.ShowDialog();
+ throw new NotImplementedException();
}
+ this.finished.WaitOne();
+
this.Log(
string.Format(
CultureInfo.InvariantCulture,
@@ -68,16 +99,13 @@ public void Run()
}
}
- private void OnCompleted(object sender, TestCompletedEventArgs e)
- {
- File.WriteAllText("TestResults.trx", e.TrxFileContents);
- }
-
- private void OnLogEvent(object sender, LogEventArgs e)
+ private void OnTestMethodCompleted(HttpListenerContext context)
{
ConsoleColor oldColor = Console.ForegroundColor;
-
- switch (e.Result)
+ string result = context.Request.QueryString["result"];
+ string methodName = context.Request.QueryString["method"];
+ string className = context.Request.QueryString["class"];
+ switch (result)
{
case "Passed":
Console.ForegroundColor = ConsoleColor.Green;
@@ -95,18 +123,33 @@ private void OnLogEvent(object sender, LogEventArgs e)
break;
}
- this.Log(e.Result.PadRight(20));
+ this.Log(result.PadRight(10));
Console.ForegroundColor = oldColor;
- this.Log(e.ClassName + "." + e.MethodName);
+ this.Log(className + "." + methodName);
this.Log(Environment.NewLine);
- if (e.Exception != null && e.Result != "Passed")
+ Console.ForegroundColor = oldColor;
+ }
+
+ private void OnTestCompleted(HttpListenerContext context)
+ {
+ byte[] data = new byte[16384];
+ int got;
+
+ using (var fos = File.Create("TestResults.trx"))
{
- Console.ForegroundColor = ConsoleColor.DarkGray;
- this.Log(e.Exception);
- this.Log(Environment.NewLine);
+ while ((got = context.Request.InputStream.Read(data, 0, data.Length)) > 0)
+ {
+ fos.Write(data, 0, got);
+ }
+ }
+
+ context.Response.OutputStream.Close();
+ if (this.currentForm != null)
+ {
+ this.currentForm.Close();
}
- Console.ForegroundColor = oldColor;
+ this.finished.Set();
}
}
}
View
14 tests/SilverlightConsoleRunner/LogEventArgs.cs
@@ -1,14 +0,0 @@
-using System;
-
-namespace SilverlightConsoleRunner
-{
- public class LogEventArgs : EventArgs
- {
- public DateTime StartDate { get; set; }
- public DateTime EndDate { get; set; }
- public string Exception { get; set; }
- public string ClassName { get; set; }
- public string MethodName { get; set; }
- public string Result { get; set; }
- }
-}
View
119 tests/SilverlightConsoleRunner/MicroHttpServer.cs
@@ -10,11 +10,9 @@ namespace SilverlightConsoleRunner
{
public class MicroHttpServer : IDisposable
{
- private Socket socket;
- private readonly Dictionary<string, Func<byte[]>> handlers = new Dictionary<string, Func<byte[]>>();
- private readonly Dictionary<string, string> contentTypes = new Dictionary<string, string>();
- private readonly Regex getRegex = new Regex("^GET (?<url>.*) HTTP/1", RegexOptions.Compiled);
-
+ private HttpListener httpListener;
+ private readonly Dictionary<Regex, Action<HttpListenerContext>> handlers = new Dictionary<Regex, Action<HttpListenerContext>>();
+
public MicroHttpServer()
{
this.ListenPort = 17788;
@@ -26,98 +24,87 @@ public MicroHttpServer()
public void Start()
{
- socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- socket.Bind(new IPEndPoint(IPAddress.Loopback, this.ListenPort));
- socket.Listen(10);
- socket.BeginAccept(OnAccept, null);
+ httpListener = new HttpListener();
+ httpListener.Prefixes.Add("http://localhost:" + this.ListenPort + "/");
+ httpListener.Start();
+ httpListener.BeginGetContext(this.OnNewRequest, null);
}
- private void OnAccept(IAsyncResult ar)
+ private void OnNewRequest(IAsyncResult ar)
{
- using (Socket acceptedSocket = this.socket.EndAccept(ar))
- {
- socket.BeginAccept(OnAccept, null);
- HandleConnection(acceptedSocket);
- }
- }
-
- private void HandleConnection(Socket socket)
- {
- NetworkStream ns = new NetworkStream(socket, false);
- StreamReader sr = new StreamReader(ns, Encoding.ASCII);
- StreamWriter sw = new StreamWriter(ns, Encoding.UTF8);
- string url = "";
-
- try
+ var context = httpListener.EndGetContext(ar);
+ httpListener.BeginGetContext(this.OnNewRequest, null);
+ foreach (var d in handlers)
{
- string line;
- List<string> lines = new List<string>();
- while ((line = sr.ReadLine()) != null && line.Length > 0)
+ var m = d.Key.Match(context.Request.Url.LocalPath);
+ if (m.Success)
{
- lines.Add(line);
+ try
+ {
+ d.Value(context);
+ context.Response.OutputStream.Close();
+ }
+ catch (Exception ex)
+ {
+ context.Response.StatusCode = 500;
+ context.Response.ContentType = "text/plain";
+ using (var sw = new StreamWriter(context.Response.OutputStream))
+ {
+ sw.WriteLine("ERROR: {0}", ex);
+ }
+ }
+ return;
}
-
- var match = getRegex.Match(lines[0]);
- if (!match.Success)
- {
- throw new NotSupportedException("Not supported request format.");
- }
-
- url = match.Groups["url"].Value;
- byte[] data = this.handlers[url]();
-
- // Console.WriteLine("Serving: {0} {1} bytes {2}", url, data.Length, contentTypes[url]);
- sw.WriteLine("HTTP/1.0 200 OK");
- sw.WriteLine("Content-Type: {0}", contentTypes[url]);
- sw.WriteLine("Content-Length: {0}", data.Length);
- sw.WriteLine();
- sw.Flush();
- sw.BaseStream.Write(data, 0, data.Length);
}
- catch (Exception ex)
+
+ context.Response.StatusCode = 404;
+ context.Response.ContentType = "text/plain";
+ using (var sw = new StreamWriter(context.Response.OutputStream))
{
- Console.WriteLine("ERROR: {0} {1}", url, ex.Message);
- byte[] exceptionData = sw.Encoding.GetBytes(ex.ToString());
- sw.WriteLine("HTTP/1.0 500 Internal eror");
- sw.WriteLine("Content-Type: text/plain");
- sw.WriteLine("Content-Length: {0}", exceptionData.Length);
- sw.WriteLine();
- sw.Flush();
- sw.BaseStream.Write(exceptionData, 0, exceptionData.Length);
+ sw.WriteLine("Not found.");
}
+
}
public void Stop()
{
- if (this.socket != null)
+ if (this.httpListener != null)
{
- this.socket.Close();
- this.socket = null;
+ this.httpListener.Abort();
+ this.httpListener.Close();
+ this.httpListener = null;
}
}
- public void AddHandler(string url, string contentType, Func<byte[]> handler)
+ public void AddHandler(string url, Action<HttpListenerContext> handler)
{
- this.handlers.Add(url, handler);
- this.contentTypes[url] = contentType;
+ this.handlers.Add(new Regex(url), handler);
}
public void AddFileHandler(string url, string contentType, string fileName)
{
- this.AddHandler(url, contentType,
- () => File.ReadAllBytes(fileName));
+ this.AddHandler(url,
+ context =>
+ {
+ byte[] data = File.ReadAllBytes(fileName);
+ context.Response.ContentType = contentType;
+ context.Response.OutputStream.Write(data, 0, data.Length);
+ context.Response.OutputStream.Close();
+ });
}
public void AddResourceHandler(string url, string contentType, Type typeScope, string resourceName)
{
- this.AddHandler(url, contentType,
- () =>
+ this.AddHandler(url,
+ context =>
{
Stream s = typeScope.Assembly.GetManifestResourceStream(typeScope, resourceName);
byte[] data = new byte[s.Length];
s.Read(data, 0, data.Length);
- return data;
+ context.Response.ContentType = contentType;
+ context.Response.OutputStream.Write(data, 0, data.Length);
+ context.Response.OutputStream.Close();
});
}
View
27 tests/SilverlightConsoleRunner/Program.cs
@@ -12,16 +12,10 @@ public static int Main(string[] args)
{
if (args.Length < 2)
{
- Console.WriteLine("Usage: SilverlightConsoleRunner testfile.xap [SL2|SL3|SL4] [logfile.log]");
+ Console.WriteLine("Usage: SilverlightConsoleRunner testfile.xap [SL2|SL3|SL4|WP7|WP71] [-log logfile.log]");
return 1;
}
- string logfile = "UnitTests.log";
- if (args.Length > 2)
- {
- logfile = args[2];
- }
-
string xapFile = args[0];
var runner = new ConsoleRunner()
{
@@ -29,6 +23,25 @@ public static int Main(string[] args)
SilverlightVersion = args[1],
};
+ string logfile = "UnitTests.log";
+ for (int i = 2; i < args.Length; ++i)
+ {
+ switch (args[i])
+ {
+ case "-log":
+ logfile = args[++i];
+ break;
+
+ case "-guid":
+ runner.AppGuid = new Guid(args[++i]);
+ break;
+
+ case "-icon":
+ runner.IconFile = args[++i];
+ break;
+ }
+ }
+
Console.WriteLine("Running tests in '{0}'", Path.GetFullPath(runner.XapFile));
Console.WriteLine("Silverlight version: '{0}'", runner.SilverlightVersion);
Console.WriteLine("Log file: '{0}'", Path.GetFullPath(logfile));
View
44 tests/SilverlightConsoleRunner/RunnerForm.cs
@@ -13,53 +13,9 @@ public RunnerForm()
public string Url { get; set; }
- public event EventHandler<TestCompletedEventArgs> OnCompleted;
- public event EventHandler<LogEventArgs> OnLogEvent;
-
private void RunnerForm_Load(object sender, EventArgs e)
{
- webBrowser1.ObjectForScripting = new ExternalLog(this);
webBrowser1.Navigate(this.Url);
}
-
- [ComVisible(true)]
- public class ExternalLog
- {
- private RunnerForm form;
-
- public ExternalLog(RunnerForm form)
- {
- this.form = form;
- }
-
- public void TestCompleted(string trxContent)
- {
- var onCompleted = this.form.OnCompleted;
- if (onCompleted != null)
- {
- onCompleted(this, new TestCompletedEventArgs {TrxFileContents = trxContent});
- }
-
- this.form.Close();
- }
-
- public void ScenarioResult(long startDateTicks, long endDateTicks, string className, string methodName, string result, string exceptionMessage)
- {
- var onLogEvent = this.form.OnLogEvent;
- if (onLogEvent != null)
- {
- onLogEvent(this.form, new LogEventArgs
- {
- StartDate = new DateTime(startDateTicks),
- EndDate = new DateTime(endDateTicks),
- ClassName = className,
- MethodName = methodName,
- Result = result,
- Exception = exceptionMessage,
-
- });
- }
- }
- }
}
}
View
7 tests/SilverlightConsoleRunner/SilverlightConsoleRunner.csproj
@@ -37,6 +37,11 @@
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
<ItemGroup>
+ <Reference Include="RunXap, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86">
+ <SpecificVersion>False</SpecificVersion>
+ <ExecutableExtension>.exe</ExecutableExtension>
+ <HintPath>..\..\tools\RunXap.dll</HintPath>
+ </Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
@@ -54,7 +59,6 @@
</ItemGroup>
<ItemGroup>
<Compile Include="ConsoleRunner.cs" />
- <Compile Include="LogEventArgs.cs" />
<Compile Include="MicroHttpServer.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
@@ -64,7 +68,6 @@
<Compile Include="RunnerForm.Designer.cs">
<DependentUpon>RunnerForm.cs</DependentUpon>
</Compile>
- <Compile Include="TestCompletedEventArgs.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="RunnerForm.resx">
View
20 tests/SilverlightConsoleRunner/SilverlightConsoleRunner.sln
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SilverlightConsoleRunner", "SilverlightConsoleRunner.csproj", "{9F781FD8-1E0F-4248-BDB1-F07DB925E69C}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {9F781FD8-1E0F-4248-BDB1-F07DB925E69C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9F781FD8-1E0F-4248-BDB1-F07DB925E69C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9F781FD8-1E0F-4248-BDB1-F07DB925E69C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9F781FD8-1E0F-4248-BDB1-F07DB925E69C}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
View
9 tests/SilverlightConsoleRunner/TestCompletedEventArgs.cs
@@ -1,9 +0,0 @@
-using System;
-
-namespace SilverlightConsoleRunner
-{
- public class TestCompletedEventArgs : EventArgs
- {
- public string TrxFileContents { get; set; }
- }
-}
View
BIN  tools/RunXap.dll
Binary file not shown
View
49 tools/RunXap/Program.cs
@@ -0,0 +1,49 @@
+namespace RunXap
+{
+ using System;
+ using System.Collections.Generic;
+ using System.Linq;
+ using System.Text;
+ using Microsoft.SmartDevice.Connectivity;
+
+ public class XapRunner
+ {
+ public static void RunXap(string xapPackage, string iconPath, Guid appGuid, string platformName, string deviceName)
+ {
+ var datastoreManager = new DatastoreManager(1033);
+ Platform wp7 = datastoreManager.GetPlatforms().Single(p => p.Name == platformName);
+ Device device = wp7.GetDevices().Single(c => c.Name == deviceName);
+ try
+ {
+ Console.WriteLine("Connecting to {0}...", device.Name);
+ device.Connect();
+ Console.WriteLine("Connected.");
+ bool isInstalled = device.IsApplicationInstalled(appGuid);
+ RemoteApplication app;
+
+ if (isInstalled)
+ {
+ app = device.GetApplication(appGuid);
+ Console.WriteLine("Stopping running instances...");
+ app.TerminateRunningInstances();
+ Console.WriteLine("Application {0} installed. Removing...", appGuid);
+ app.Uninstall();
+ }
+
+ Console.WriteLine("Installing XAP...");
+ app = device.InstallApplication(appGuid, appGuid, "apps.normal", iconPath, xapPackage);
+ Console.WriteLine("Launching app...");
+ app.Launch();
+ Console.WriteLine("Launched...");
+ }
+ finally
+ {
+ if (device.IsConnected())
+ {
+ Console.WriteLine("Disconnecting from {0}...", device.Name);
+ device.Disconnect();
+ }
+ }
+ }
+ }
+}
View
36 tools/RunXap/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 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("RunXap")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("RunXap")]
+[assembly: AssemblyCopyright("Copyright © 2011")]
+[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("ec201270-4f46-4967-9dbe-4e0985dc907d")]
+
+// 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 Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
View
59 tools/RunXap/RunXap.csproj
@@ -0,0 +1,59 @@
+<?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)' == '' ">x86</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{0E5F01FB-F76F-48C0-BEB0-4AA25FF02F86}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>RunXap</RootNamespace>
+ <AssemblyName>RunXap</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>
+ </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>
+ </PropertyGroup>
+ <PropertyGroup>
+ <StartupObject />
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="Microsoft.Smartdevice.Connectivity, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>..\..\..\Program Files\Common Files\microsoft shared\Phone Tools\CoreCon\10.0\Bin\Microsoft.Smartdevice.Connectivity.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Program.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </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>
View
20 tools/RunXap/RunXap.sln
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RunXap", "RunXap.csproj", "{0E5F01FB-F76F-48C0-BEB0-4AA25FF02F86}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x86 = Debug|x86
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {0E5F01FB-F76F-48C0-BEB0-4AA25FF02F86}.Debug|x86.ActiveCfg = Debug|x86
+ {0E5F01FB-F76F-48C0-BEB0-4AA25FF02F86}.Debug|x86.Build.0 = Debug|x86
+ {0E5F01FB-F76F-48C0-BEB0-4AA25FF02F86}.Release|x86.ActiveCfg = Release|x86
+ {0E5F01FB-F76F-48C0-BEB0-4AA25FF02F86}.Release|x86.Build.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
Please sign in to comment.
Something went wrong with that request. Please try again.