diff --git a/src/AgUnit.Runner.Resharper60.TaskRunner/UnitTestRunner/Silverlight/SilverlightUnitTestTaskRunner.cs b/src/AgUnit.Runner.Resharper60.TaskRunner/UnitTestRunner/Silverlight/SilverlightUnitTestTaskRunner.cs
index fa992ee..d6f698d 100644
--- a/src/AgUnit.Runner.Resharper60.TaskRunner/UnitTestRunner/Silverlight/SilverlightUnitTestTaskRunner.cs
+++ b/src/AgUnit.Runner.Resharper60.TaskRunner/UnitTestRunner/Silverlight/SilverlightUnitTestTaskRunner.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
-using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using JetBrains.ReSharper.TaskRunnerFramework;
@@ -38,7 +37,7 @@ public override TaskResult Finish(TaskExecutionNode node)
public override void ExecuteRecursive(TaskExecutionNode node)
{
- Debugger.Break();
+ //Debugger.Break();
try
{
diff --git a/src/AgUnit.Runner.Resharper60/AgUnit.Runner.Resharper60.csproj b/src/AgUnit.Runner.Resharper60/AgUnit.Runner.Resharper60.csproj
index aaa6805..67098e9 100644
--- a/src/AgUnit.Runner.Resharper60/AgUnit.Runner.Resharper60.csproj
+++ b/src/AgUnit.Runner.Resharper60/AgUnit.Runner.Resharper60.csproj
@@ -13,10 +13,10 @@
v4.0
512
- $(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\JetBrains\ReSharper\v6.0\vs10.0@InstallDir)
- Program
- $(DevEnvDir)devenv.exe
- /ReSharper.Plugin AgUnit.Runner.Resharper60.dll /ReSharper.LogFile C:\resharper.log /ReSharper.LogLevel Verbose ..\src\DummyTests\VS2010\DummyTests.sln
+ $(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\JetBrains\ReSharper\v6.0\vs10.0@InstallDir)
+ Program
+ $(DevEnvDir)devenv.exe
+ /ReSharper.Plugin AgUnit.Runner.Resharper60.dll /ReSharper.LogFile C:\resharper.log /ReSharper.LogLevel Verbose ..\src\DummyTests\VS2010\DummyTests.sln
..\..\output\
@@ -127,11 +127,14 @@
+
+
+
-
+
diff --git a/src/AgUnit.Runner.Resharper60/UnitTestFramework/ExtendedDebugTaskRunnerHostController.cs b/src/AgUnit.Runner.Resharper60/UnitTestFramework/ExtendedDebugTaskRunnerHostController.cs
index 22b5920..2ec3f8e 100644
--- a/src/AgUnit.Runner.Resharper60/UnitTestFramework/ExtendedDebugTaskRunnerHostController.cs
+++ b/src/AgUnit.Runner.Resharper60/UnitTestFramework/ExtendedDebugTaskRunnerHostController.cs
@@ -1,25 +1,70 @@
extern alias util;
-
+using System;
+using System.Runtime.InteropServices;
+using AgUnit.Runner.Resharper60.UnitTestFramework.SilverlightPlatform;
+using AgUnit.Runner.Resharper60.Util;
using EnvDTE;
using JetBrains.ReSharper.UnitTestExplorer;
using JetBrains.ReSharper.UnitTestFramework;
using JetBrains.Threading;
using Microsoft.VisualStudio.Shell.Interop;
-using util::JetBrains.Util.Lazy;
+using util::JetBrains.Util;
+using Thread = System.Threading.Thread;
namespace AgUnit.Runner.Resharper60.UnitTestFramework
{
public class ExtendedDebugTaskRunnerHostController : DebugTaskRunnerHostController
{
- public ExtendedDebugTaskRunnerHostController(UnitTestManager manager, UnitTestSessionManager sessionManager, Lazy debugger2, DTE dte, IThreading threading, IUnitTestLaunch launch, string remotingAddress)
+ public ExtendedDebugTaskRunnerHostController(UnitTestManager manager, UnitTestSessionManager sessionManager, util::JetBrains.Util.Lazy.Lazy debugger2, DTE dte, IThreading threading, IUnitTestLaunch launch, string remotingAddress)
: base(manager, sessionManager, debugger2, dte, threading, launch, remotingAddress)
{ }
- // TODO: If we have a Silverlight test run, we should attach the Silverlight debugger here instead of the .NET/COM debugger.
- // See the implementation in the version of AgUnit for R# 5.0: https://hg01.codeplex.com/agunit/file/e1d353fe2274/AgUnit.Runner.Resharper50/UnitTestHost/AgUnitHostController.cs
public override void Run(string remotingAddress, IUnitTestRun run)
{
- base.Run(remotingAddress, run);
+ if (run.IsSilverlightRun())
+ {
+ RunWithSilverlightDebugger(remotingAddress, run);
+ }
+ else
+ {
+ base.Run(remotingAddress, run);
+ }
+ }
+
+ private void RunWithSilverlightDebugger(string remotingAddress, IUnitTestRun run)
+ {
+ var targetInfo = CreateTargetInfo(remotingAddress, run);
+
+ this.SetField("myRunId", run.ID);
+ this.SetField("myTargetInfo", targetInfo);
+
+ new Thread(CallThreadProc) { IsBackground = true }.Start();
+ }
+
+ private VsDebugTargetInfo2 CreateTargetInfo(string remotingAddress, IUnitTestRun run)
+ {
+ var runnerPath = GetTaskRunnerPathForRun(run);
+ var runnerArgs = GetTaskRunnerCommandLineArgs(remotingAddress, run.ID);
+ var silverlightDebugEngineGuid = new Guid("032F4B8C-7045-4B24-ACCF-D08C9DA108FE");
+
+ var debugTargetInfo = new VsDebugTargetInfo2
+ {
+ dlo = 1U,
+ bstrExe = runnerPath.FullPath,
+ bstrCurDir = runnerPath.Directory.FullPath,
+ bstrArg = runnerArgs,
+ guidLaunchDebugEngine = silverlightDebugEngineGuid,
+ LaunchFlags = 97U
+ };
+
+ debugTargetInfo.cbSize = (uint)Marshal.SizeOf(debugTargetInfo);
+
+ return debugTargetInfo;
+ }
+
+ private void CallThreadProc()
+ {
+ Logger.Catch(() => this.CallMethod("ThreadProc"));
}
}
}
\ No newline at end of file
diff --git a/src/AgUnit.Runner.Resharper60/UnitTestFramework/HostProviderWrapper.cs b/src/AgUnit.Runner.Resharper60/UnitTestFramework/HostProviderWrapper.cs
index e45e94d..c75a627 100644
--- a/src/AgUnit.Runner.Resharper60/UnitTestFramework/HostProviderWrapper.cs
+++ b/src/AgUnit.Runner.Resharper60/UnitTestFramework/HostProviderWrapper.cs
@@ -1,4 +1,5 @@
extern alias util;
+using AgUnit.Runner.Resharper60.UnitTestFramework.SilverlightPlatform;
using JetBrains.ReSharper.UnitTestFramework;
namespace AgUnit.Runner.Resharper60.UnitTestFramework
diff --git a/src/AgUnit.Runner.Resharper60/UnitTestFramework/SilverlightPlatform/SilverlightPlatformSupportExtensions.cs b/src/AgUnit.Runner.Resharper60/UnitTestFramework/SilverlightPlatform/SilverlightPlatformSupportExtensions.cs
new file mode 100644
index 0000000..85b2b82
--- /dev/null
+++ b/src/AgUnit.Runner.Resharper60/UnitTestFramework/SilverlightPlatform/SilverlightPlatformSupportExtensions.cs
@@ -0,0 +1,50 @@
+using System.Collections.Generic;
+using System.Linq;
+using JetBrains.ProjectModel;
+using JetBrains.ReSharper.UnitTestExplorer;
+using JetBrains.ReSharper.UnitTestFramework;
+
+namespace AgUnit.Runner.Resharper60.UnitTestFramework.SilverlightPlatform
+{
+ public static class SilverlightPlatformSupportExtensions
+ {
+ public static void EnsureSilverlightPlatformSupport(this IUnitTestLaunch launch, UnitTestManager manager)
+ {
+ var runs = launch.GetRuns();
+
+ foreach (var run in runs.Values.ToArray())
+ {
+ foreach (var sequence in run.GetSequences().ToArray())
+ {
+ ConvertToSilverlightSequenceIfNecessary(sequence, run, launch, manager);
+ }
+ }
+
+ launch.RemoveEmptyRuns();
+ }
+
+ private static void ConvertToSilverlightSequenceIfNecessary(IList sequence, UnitTestRun run, IUnitTestLaunch launch, UnitTestManager manager)
+ {
+ if (!sequence.IsSilverlightSequence())
+ {
+ var requiredSilverlightPlatform = sequence.GetRequiredSilverlightPlatform();
+ if (requiredSilverlightPlatform != null)
+ {
+ run.GetSequences().Remove(sequence);
+
+ CreateSilverlightSequence(sequence, launch, manager, requiredSilverlightPlatform);
+ }
+ }
+ }
+
+ private static void CreateSilverlightSequence(IList sequence, IUnitTestLaunch launch, UnitTestManager manager, PlatformID silverlightPlatform)
+ {
+ var silverlightRun = launch.GetOrCreateSilverlightRun(silverlightPlatform);
+
+ sequence.AddSilverlightUnitTestTask(silverlightPlatform, manager);
+ sequence.RemoveAssemblyLoadTasks();
+
+ silverlightRun.AddTaskSequence(sequence);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/AgUnit.Runner.Resharper60/UnitTestFramework/SilverlightPlatform/UnitTestLaunchExtensions.cs b/src/AgUnit.Runner.Resharper60/UnitTestFramework/SilverlightPlatform/UnitTestLaunchExtensions.cs
new file mode 100644
index 0000000..eafbbe0
--- /dev/null
+++ b/src/AgUnit.Runner.Resharper60/UnitTestFramework/SilverlightPlatform/UnitTestLaunchExtensions.cs
@@ -0,0 +1,44 @@
+using System.Collections.Generic;
+using System.Linq;
+using AgUnit.Runner.Resharper60.Util;
+using JetBrains.ProjectModel;
+using JetBrains.ReSharper.TaskRunnerFramework;
+using JetBrains.ReSharper.UnitTestExplorer;
+using JetBrains.ReSharper.UnitTestFramework;
+
+namespace AgUnit.Runner.Resharper60.UnitTestFramework.SilverlightPlatform
+{
+ public static class UnitTestLaunchExtensions
+ {
+ public static void RemoveEmptyRuns(this IUnitTestLaunch launch)
+ {
+ var runs = launch.GetRuns();
+ var emptyRuns = runs.Values.Where(run => !run.GetSequences().Any()).ToArray();
+
+ foreach (var run in emptyRuns)
+ {
+ runs.Remove(run.ID);
+ }
+ }
+
+ public static UnitTestRun GetOrCreateSilverlightRun(this IUnitTestLaunch launch, PlatformID silverlightPlatform)
+ {
+ var runs = launch.GetRuns();
+ var silverlightRun = runs.Values.FirstOrDefault(run => run.GetSilverlightPlatformVersion() == silverlightPlatform.Version);
+
+ if (silverlightRun == null)
+ {
+ var runtimeEnvironment = new RuntimeEnvironment { PlatformType = PlatformType.x86, PlatformVersion = PlatformVersion.v4_0 };
+ silverlightRun = new UnitTestRun((UnitTestLaunch)launch, runtimeEnvironment);
+ runs.Add(silverlightRun.ID, silverlightRun);
+ }
+
+ return silverlightRun;
+ }
+
+ public static Dictionary GetRuns(this IUnitTestLaunch launch)
+ {
+ return launch.GetField>("myRuns");
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/AgUnit.Runner.Resharper60/UnitTestFramework/SilverlightPlatform/UnitTestRunExtensions.cs b/src/AgUnit.Runner.Resharper60/UnitTestFramework/SilverlightPlatform/UnitTestRunExtensions.cs
new file mode 100644
index 0000000..7f049b8
--- /dev/null
+++ b/src/AgUnit.Runner.Resharper60/UnitTestFramework/SilverlightPlatform/UnitTestRunExtensions.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using AgUnit.Runner.Resharper60.Util;
+using JetBrains.ReSharper.UnitTestFramework;
+
+namespace AgUnit.Runner.Resharper60.UnitTestFramework.SilverlightPlatform
+{
+ public static class UnitTestRunExtensions
+ {
+ public static bool IsSilverlightRun(this IUnitTestRun run)
+ {
+ return run.GetSilverlightPlatformVersion() != null;
+ }
+
+ public static Version GetSilverlightPlatformVersion(this IUnitTestRun run)
+ {
+ var sequence = run.GetSequences().FirstOrDefault();
+ return sequence != null ? sequence.GetSilverlightPlatformVersion() : null;
+ }
+
+ public static IList> GetSequences(this IUnitTestRun run)
+ {
+ return run.GetField>>("mySequences");
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/AgUnit.Runner.Resharper60/UnitTestFramework/SilverlightPlatform/UnitTestSequenceExtensions.cs b/src/AgUnit.Runner.Resharper60/UnitTestFramework/SilverlightPlatform/UnitTestSequenceExtensions.cs
new file mode 100644
index 0000000..8a4b919
--- /dev/null
+++ b/src/AgUnit.Runner.Resharper60/UnitTestFramework/SilverlightPlatform/UnitTestSequenceExtensions.cs
@@ -0,0 +1,57 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using AgUnit.Runner.Resharper60.UnitTestFramework.Silverlight;
+using JetBrains.ProjectModel;
+using JetBrains.ReSharper.TaskRunnerFramework;
+using JetBrains.ReSharper.UnitTestFramework;
+using PlatformID = JetBrains.ProjectModel.PlatformID;
+
+namespace AgUnit.Runner.Resharper60.UnitTestFramework.SilverlightPlatform
+{
+ public static class UnitTestSequenceExtensions
+ {
+ public static PlatformID GetRequiredSilverlightPlatform(this IList sequence)
+ {
+ return sequence
+ .Where(task => task.Element != null)
+ .Select(task => task.Element.GetProject())
+ .Where(project => project != null)
+ .Select(project => project.PlatformID)
+ .FirstOrDefault(platform => platform != null && platform.Identifier == FrameworkIdentifier.Silverlight);
+ }
+
+ public static bool IsSilverlightSequence(this IList sequence)
+ {
+ return sequence.GetSilverlightUnitTestTask() != null;
+ }
+
+ public static Version GetSilverlightPlatformVersion(this IList sequence)
+ {
+ var silverlightUnitTestTask = sequence.GetSilverlightUnitTestTask();
+ return silverlightUnitTestTask != null ? silverlightUnitTestTask.SilverlightPlatformVersion : null;
+ }
+
+ public static SilverlightUnitTestTask GetSilverlightUnitTestTask(this IList sequence)
+ {
+ return sequence.Select(task => task.RemoteTask).FirstOrDefault() as SilverlightUnitTestTask;
+ }
+
+ public static void AddSilverlightUnitTestTask(this IList sequence, PlatformID silverlightPlatform, UnitTestManager manager)
+ {
+ var provider = manager.GetProvider(SilverlightUnitTestProvider.RunnerId);
+ var element = new SilverlightUnitTestElement(provider);
+ var remoteTask = new SilverlightUnitTestTask(silverlightPlatform.Version);
+ sequence.Insert(0, new UnitTestTask(element, remoteTask));
+ }
+
+ public static void RemoveAssemblyLoadTasks(this IList sequence)
+ {
+ var assemblyLoadTasks = sequence.Where(t => t.RemoteTask is AssemblyLoadTask).ToArray();
+ foreach (var assemblyLoadTask in assemblyLoadTasks)
+ {
+ sequence.Remove(assemblyLoadTask);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/AgUnit.Runner.Resharper60/UnitTestFramework/UnitTestLaunchExtensions.cs b/src/AgUnit.Runner.Resharper60/UnitTestFramework/UnitTestLaunchExtensions.cs
deleted file mode 100644
index 41d0902..0000000
--- a/src/AgUnit.Runner.Resharper60/UnitTestFramework/UnitTestLaunchExtensions.cs
+++ /dev/null
@@ -1,139 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using AgUnit.Runner.Resharper60.UnitTestFramework.Silverlight;
-using AgUnit.Runner.Resharper60.Util;
-using JetBrains.ProjectModel;
-using JetBrains.ReSharper.TaskRunnerFramework;
-using JetBrains.ReSharper.UnitTestExplorer;
-using JetBrains.ReSharper.UnitTestFramework;
-using PlatformID = JetBrains.ProjectModel.PlatformID;
-
-namespace AgUnit.Runner.Resharper60.UnitTestFramework
-{
- public static class UnitTestLaunchExtensions
- {
- public static void EnsureSilverlightPlatformSupport(this IUnitTestLaunch launch, UnitTestManager manager)
- {
- var runs = GetRuns(launch);
-
- foreach (var run in runs.Values.ToArray())
- {
- CheckForSilverlightSequences(launch, runs, run, manager);
- }
-
- RemoveEmptyRuns(runs);
- }
-
- private static Dictionary GetRuns(IUnitTestLaunch launch)
- {
- return launch.GetField>("myRuns");
- }
-
- private static IList> GetSequences(UnitTestRun run)
- {
- return run.GetField>>("mySequences");
- }
-
- private static void RemoveEmptyRuns(Dictionary runs)
- {
- var emptyRuns = runs.Values.Where(run => !GetSequences(run).Any()).ToArray();
-
- foreach (var run in emptyRuns)
- {
- runs.Remove(run.ID);
- }
- }
-
- private static void CheckForSilverlightSequences(IUnitTestLaunch launch, Dictionary runs, UnitTestRun run, UnitTestManager manager)
- {
- var silverlightSequenceFound = false;
- var sequences = GetSequences(run);
-
- foreach (var sequence in sequences.ToArray())
- {
- if (!IsAlreadySilverlightSequence(sequence))
- {
- var silverlightPlatform = GetSilverlightPlatform(sequence);
-
- if (silverlightPlatform != null)
- {
- sequences.Remove(sequence);
-
- silverlightSequenceFound = true;
- CreateSilverlightSequence(sequence, silverlightPlatform, launch, runs);
- }
- }
- }
-
- if (silverlightSequenceFound)
- {
- AddSilverlightUnitTestTask(manager, sequences);
- }
- }
-
- // We do this to make sure the SilverlightUnitTestProvider is passed to the runner, so the assemblies are loaded.
- private static void AddSilverlightUnitTestTask(UnitTestManager manager, IList> sequences)
- {
- var provider = manager.GetProvider(SilverlightUnitTestProvider.RunnerId);
- var element = new SilverlightUnitTestElement(provider);
- var remoteTask = new SilverlightUnitTestTask((Version)null);
- var task = new UnitTestTask(element, remoteTask);
-
- sequences.Add(new List { task });
- }
-
- private static bool IsAlreadySilverlightSequence(IEnumerable sequence)
- {
- return sequence.Select(task => task.RemoteTask).FirstOrDefault() is SilverlightUnitTestTask;
- }
-
- private static PlatformID GetSilverlightPlatform(IEnumerable sequence)
- {
- return sequence.Where(task => task.Element != null)
- .Select(task => task.Element.GetProject())
- .Where(project => project != null)
- .Select(project => project.PlatformID)
- .FirstOrDefault(platform => platform != null && platform.Identifier == FrameworkIdentifier.Silverlight);
- }
-
- private static void CreateSilverlightSequence(IList sequence, PlatformID silverlightPlatform, IUnitTestLaunch launch, Dictionary runs)
- {
- AddSilverlightUnitTestTask(sequence, silverlightPlatform);
- RemoveAssemblyLoadTasks(sequence);
-
- var silverlightRun = GetOrCreateRun(launch, runs);
- silverlightRun.AddTaskSequence(sequence);
- }
-
- private static void AddSilverlightUnitTestTask(IList sequence, PlatformID silverlightPlatform)
- {
- var remoteTask = new SilverlightUnitTestTask(silverlightPlatform.Version);
-
- sequence.Insert(0, new UnitTestTask(null, remoteTask));
- }
-
- private static void RemoveAssemblyLoadTasks(IList sequence)
- {
- var assemblyLoadTasks = sequence.Where(t => t.RemoteTask is AssemblyLoadTask).ToArray();
- foreach (var assemblyLoadTask in assemblyLoadTasks)
- {
- sequence.Remove(assemblyLoadTask);
- }
- }
-
- private static UnitTestRun GetOrCreateRun(IUnitTestLaunch launch, Dictionary runs)
- {
- var runtimeEnvironment = new RuntimeEnvironment { PlatformType = PlatformType.x86, PlatformVersion = PlatformVersion.v4_0 };
- var run = runs.Values.FirstOrDefault(r => Equals(r.RuntimeEnvironment, runtimeEnvironment));
-
- if (run == null)
- {
- run = new UnitTestRun((UnitTestLaunch)launch, runtimeEnvironment);
- runs.Add(run.ID, run);
- }
-
- return run;
- }
- }
-}
\ No newline at end of file
diff --git a/src/AgUnit.Runner.Resharper60/Util/ReflectionExtensions.cs b/src/AgUnit.Runner.Resharper60/Util/ReflectionExtensions.cs
index 61d0b00..04407cf 100644
--- a/src/AgUnit.Runner.Resharper60/Util/ReflectionExtensions.cs
+++ b/src/AgUnit.Runner.Resharper60/Util/ReflectionExtensions.cs
@@ -7,34 +7,69 @@ namespace AgUnit.Runner.Resharper60.Util
public static class ReflectionExtensions
{
private static readonly IDictionary, FieldInfo> FieldInfoCache = new Dictionary, FieldInfo>();
+ private static readonly IDictionary, MethodInfo> MethodInfoCache = new Dictionary, MethodInfo>();
- public static void SetField(this object target, string fieldName, object value)
+ public static void SetField(this object target, string name, object value)
{
- GetFieldInfo(target, fieldName).SetValue(target, value);
+ GetFieldInfo(target, name).SetValue(target, value);
}
- public static T GetField(this object target, string fieldName)
+ public static T GetField(this object target, string name)
{
- return (T)GetFieldInfo(target, fieldName).GetValue(target);
+ return (T)GetFieldInfo(target, name).GetValue(target);
+ }
+
+ public static object CallMethod(this object target, string name, params object[] parameters)
+ {
+ return (T)CallMethod(target, name, parameters);
+ }
+
+ public static object CallMethod(this object target, string name, params object[] parameters)
+ {
+ return GetMethodInfo(target, name).Invoke(target, parameters);
}
private static FieldInfo GetFieldInfo(object target, string fieldName)
+ {
+ return GetMemberInfo(target, fieldName, FieldInfoCache, (type, name, bindingAttr) => type.GetField(name, bindingAttr));
+ }
+
+ private static MethodInfo GetMethodInfo(object target, string methodName)
+ {
+ return GetMemberInfo(target, methodName, MethodInfoCache, (type, name, bindingAttr) => type.GetMethod(name, bindingAttr));
+ }
+
+ private static T GetMemberInfo(object target, string name, IDictionary, T> cache, Func getMemberInfo)
+ where T : MemberInfo
{
if (target == null) throw new ArgumentNullException("target");
- if (fieldName == null) throw new ArgumentNullException("fieldName");
+ if (name == null) throw new ArgumentNullException("name");
var targetType = target.GetType();
- var cacheKey = Tuple.Create(targetType, fieldName);
+ var cacheKey = Tuple.Create(targetType, name);
+
+ T memberInfo;
- FieldInfo fieldInfo;
+ if (!cache.TryGetValue(cacheKey, out memberInfo))
+ {
+ memberInfo = GetMemberInfoRecursive(name, targetType, getMemberInfo);
+ cache[cacheKey] = memberInfo;
+ }
+
+ return memberInfo;
+ }
+
+ private static T GetMemberInfoRecursive(string name, Type targetType, Func getMemberInfo)
+ where T : MemberInfo
+ {
+ var memberInfo = getMemberInfo(targetType, name, BindingFlags.Instance | BindingFlags.NonPublic);
- if (!FieldInfoCache.TryGetValue(cacheKey, out fieldInfo))
+ if (memberInfo == null && targetType.BaseType != null)
{
- fieldInfo = targetType.GetField(fieldName, BindingFlags.Instance | BindingFlags.NonPublic);
- FieldInfoCache[cacheKey] = fieldInfo;
+ memberInfo = GetMemberInfoRecursive(name, targetType.BaseType, getMemberInfo);
}
- return fieldInfo;
+ return memberInfo;
}
}
}
\ No newline at end of file
diff --git a/src/DummyTests/VS2010/DummyTests.DotNetNUnit/DummyTests.DotNetNUnit.csproj b/src/DummyTests/VS2010/DummyTests.DotNetNUnit/DummyTests.DotNetNUnit.csproj
index f0ddb7a..cd16383 100644
--- a/src/DummyTests/VS2010/DummyTests.DotNetNUnit/DummyTests.DotNetNUnit.csproj
+++ b/src/DummyTests/VS2010/DummyTests.DotNetNUnit/DummyTests.DotNetNUnit.csproj
@@ -32,7 +32,7 @@
- ..\..\..\Libraries\NUnit\nunit.framework.dll
+ ..\..\..\..\lib\net\NUnit\nunit.framework.dll
diff --git a/src/DummyTests/VS2010/DummyTests.Silverlight3/DummyTests.Silverlight3.csproj b/src/DummyTests/VS2010/DummyTests.Silverlight3/DummyTests.Silverlight3.csproj
index 3add67c..99392d1 100644
--- a/src/DummyTests/VS2010/DummyTests.Silverlight3/DummyTests.Silverlight3.csproj
+++ b/src/DummyTests/VS2010/DummyTests.Silverlight3/DummyTests.Silverlight3.csproj
@@ -61,10 +61,10 @@
- ..\..\..\Libraries\SilverlightToolkit\November2009\Microsoft.Silverlight.Testing.dll
+ ..\..\..\..\lib\sl\SilverlightToolkit\November2009\Microsoft.Silverlight.Testing.dll
- ..\..\..\Libraries\SilverlightToolkit\November2009\Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll
+ ..\..\..\..\lib\sl\SilverlightToolkit\November2009\Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll
diff --git a/src/DummyTests/VS2010/DummyTests.Silverlight4.Other/DummyTests.Silverlight4.Other.csproj b/src/DummyTests/VS2010/DummyTests.Silverlight4.Other/DummyTests.Silverlight4.Other.csproj
index 32c9b33..2f17512 100644
--- a/src/DummyTests/VS2010/DummyTests.Silverlight4.Other/DummyTests.Silverlight4.Other.csproj
+++ b/src/DummyTests/VS2010/DummyTests.Silverlight4.Other/DummyTests.Silverlight4.Other.csproj
@@ -61,10 +61,10 @@
- ..\..\..\Libraries\SilverlightToolkit\April2010\Microsoft.Silverlight.Testing.dll
+ ..\..\..\..\lib\sl\SilverlightToolkit\April2010\Microsoft.Silverlight.Testing.dll
- ..\..\..\Libraries\SilverlightToolkit\November2009\Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll
+ ..\..\..\..\lib\sl\SilverlightToolkit\November2009\Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll
diff --git a/src/DummyTests/VS2010/DummyTests.Silverlight4/DummyTests.Silverlight4.csproj b/src/DummyTests/VS2010/DummyTests.Silverlight4/DummyTests.Silverlight4.csproj
index bb8480e..f1e2387 100644
--- a/src/DummyTests/VS2010/DummyTests.Silverlight4/DummyTests.Silverlight4.csproj
+++ b/src/DummyTests/VS2010/DummyTests.Silverlight4/DummyTests.Silverlight4.csproj
@@ -61,10 +61,10 @@
- ..\..\..\Libraries\SilverlightToolkit\April2010\Microsoft.Silverlight.Testing.dll
+ ..\..\..\..\lib\sl\SilverlightToolkit\April2010\Microsoft.Silverlight.Testing.dll
- ..\..\..\Libraries\SilverlightToolkit\April2010\Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll
+ ..\..\..\..\lib\sl\SilverlightToolkit\April2010\Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll