The Orcas Beta 2 ReadMe contains (or should contain - let me know if it doesn't!) the following text:
On build machines with Visual Studio 2005 installed, running tests may fail with the following message: “Failed to load tests from '<assembly>': Microsoft.VisualStudio.TestTools.Exceptions.EqtDataException: UTA059: The test DLL '<assembly>' was built using Visual Studio 2005, and cannot be run. To resolve this issue please rebuild the test DLL using the current version of Visual Studio.” To work around this issue, it will be necessary to use the Visual Studio 2005 version of the TestToolsTask for the affected build definitions. This can be done by setting two properties within TfsBuild.proj as follows: <PropertyGroup> <V8TestToolsTask>true</V8TestToolsTask> <MSTestRefPath>$(ProgramFiles)\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies</MSTestRefPath> </PropertyGroup> The value for MSTestRefPath may need to be adjusted, depending on the install location of Visual Studio 2005. This property group can come at any point in TfsBuild.proj after the import of Microsoft.TeamFoundation.Build.targets.
On build machines with Visual Studio 2005 installed, running tests may fail with the following message: “Failed to load tests from '<assembly>': Microsoft.VisualStudio.TestTools.Exceptions.EqtDataException: UTA059: The test DLL '<assembly>' was built using Visual Studio 2005, and cannot be run. To resolve this issue please rebuild the test DLL using the current version of Visual Studio.” To work around this issue, it will be necessary to use the Visual Studio 2005 version of the TestToolsTask for the affected build definitions. This can be done by setting two properties within TfsBuild.proj as follows:
<PropertyGroup>
<V8TestToolsTask>true</V8TestToolsTask>
<MSTestRefPath>$(ProgramFiles)\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies</MSTestRefPath>
</PropertyGroup>
The value for MSTestRefPath may need to be adjusted, depending on the install location of Visual Studio 2005. This property group can come at any point in TfsBuild.proj after the import of Microsoft.TeamFoundation.Build.targets.
It should be noted that this issue has been resolved for Orcas RTM, at which point the Visual Studio 2008 TestToolsTask will be able to run unit tests compiled using Visual Studio 2005 or Visual Studio 2008 and this workaround will no longer be necessary. What exactly is going on here, you might ask?
The basic issue is that the Visual Studio 2005 TestToolsTask and earlier versions (up to Beta 2) of the Visual Studio 2008 TestToolsTask were built on the same framework used for MSTest.exe. As such, using the VS 2005 TestToolsTask was essentially equivalent to using VS 2005 MSTest.exe, and using the VS 2008 TestToolsTask was essentially equivalent to running VS 2008 MSTest.exe. As a result, the VS 2005 TestToolsTask can only run unit tests compiled against the VS 2005 unit test framework, and the VS 2008 TestToolsTask can only run unit tests compiled against the VS 2008 unit test framework.
To fix the issue for Orcas RTM, the TestToolsTask was redesigned from the ground up as an inheritor of Microsoft.Build.Utilities.ToolTask, which "...provides functionality for a task that wraps a command line tool". Internally, the task will attempt to detect the version of the unit test framework that the unit tests it is running were compiled against and will locate and invoke the appropriate version of MSTest.exe.
Of course, as a side effect of this change, the properties of ToolTask are available to users of TestToolsTask. Interesting properties include:
-Aaron