Add empty project Fixie.VisualStudio.TestAdapter, building to the common build output folder in both Debug and Release mode, sharing CommonAssembly.cs.
Fixie.VisualStudio.TestAdapter references Microsoft.VisualStudio.TestPlatform.ObjectModel.
First pass at a fake/minimal Visual Studio adapter implementation.
Include Fixie.VisualStudio.TestAdapter.dll in the nuget package.
Replace phony implementation of ITestDiscoverer and ITestExecutor with implementations that simply log information about their inputs.
Add DiscoveryProxy, which runners can use to interact with test discovery across an appdomain boundary.
Visual Studio runner's ITestDiscoverer implementation discovers tests in the test assembly via a proxy to a temporary AppDomain.
Add ExecutionProxy, which runners can use to interact with test execution across an appdomain boundary.
Deprecate ConsoleRunner in favor of ExecutionProxy.
Add RemotingUtility.CleanUpRegisteredChannels() to address a Visual Studio bug that was similar fixed in both the xUnit and NUnit VS runners.
Basic implementation of the ITestExecutor interface. (This fails at runtime as the target test assembly fails to load.)
Rename variable for accuracy.
The Listener interface accepts AssemblyInfo instead of Assembly as an argument to its AssemblyStarted and AssemblyCompleted methods, because attempts to pass Assembly across AppDomain boundaries causes assembly load failures at runtime for client runners that need to provide their own Listener instantiated on their own side of the AppDomain boundary.
Add a smoke test for the declaration of Listener, whose input and output types must be limited to those which can serialize successfully across an AppDomain boundary.
Drop unused Parameters properties from FailResult/PassResult/SkipResult as a step toward making these types serializable so that they can cross AppDomain boundaries. Listeners will not have access to arbitrary method paramters, but they do have access to their summary via the Case's Name string.
Improve ListenerTests' smoke test of Listener input/output serializability so that it catches likely mistakes without being needlessly strict.
FailResult, PassResult, SkipResult become safe to use as inputs to Listener implementations, even when those implementations are instantiated in another AppDomain.
DiscoveryProxy returns a list of TestMethod, where each TestMethod is a serializable summary of a discovered test method.
Visual Studio runner logs information about the discovery and execution phases.
Sanity check the AppDomain communication boundaries used by runners (Listener, DiscoveryProxy, ExecutionProxy) to catch the use of types that will fail to work across the AppDomain boundary. This sanity check catches the most likely issues but cannot detect all possible runtime issues. Use this sanity check to expose TestMethod as an invalid type and fix it so that it becomes valid.