MSTest crash during a build in TFS 2008 SP1 - tfs

I've never managed to make MsTest works during the build of my solution on TFS. When I look the build log, I see this that TFS want to execute MsTest :
"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\MSTest.exe" /nologo /searchpathroot:"C:\BinaryRoot\TFSBuild" /resultsfileroot:"C:\TestResults\" /testmetadata:"C:\Build\MySolution\Full.vsmdi" /testlist:"WorkingTest" ...
But the build don't create any test result file.
I tried to launch this line manually on the build server but MsTest crash after this :
Loading C:\Build\MySolution\Full.vsmdi...
Search path(s) for tests:
C:\Build\MySolution\Binaries\TFSBuild
C:\Build\MySolution
Search path(s) for default run configuration:
C:\Build\MySolution
I don't see any problem with the path, my file testrunconfig is under C:\Build\MySolution.
My tests can run on my machine (VS 2008 vsts).
I've got the same problem with another build machine.
The event viewer, shows me two errors :
NET Runtime version 2.0.50727.3082 -
Fatal Execution Engine Error
(7A035FC0) (80131506)
and
Faulting application mstest.exe, version 9.0.30729.1, stamp 488f21a6, faulting module mscorwks.dll, version 2.0.50727.3082, stamp 492b82c1, debug? 0, fault address 0x001c5fc0.
Does someone has an idea about this issue, or should I just switch to another test framework/CI server ? :(

I have the exact same problem with Hudson CI, so I don't think this is related to your CI server.
Still searching for a solution though...

There is a hotfix for the same error signature, different conditions but it could be the same underlying cause - give this a try.

Related

MSBuild issue on windows server 2012-2 LINK1327 mt.exe error c1010070

We have a C++ application using MFC. We also use the manifest that is auto-generated and we actually do use it.
The environment is windows server 2012 it has TFS 2018 installed on it and a build agent configured. Visual studio 2017 pro 15.6.2 is also installed with all the needed packages for our project.
The weird thing is when I compile the project within visual studio everything is build just fine BUT when I build with the build agent on the same machine there is an error:
Generating code
All 26621 functions were compiled because no usable IPDB/IOBJ from previous compilation was found.Finished generating code
C:\_TFS(0,0): Error c1010070: Failed to load and parse the manifest. The system cannot find the file specified.
C:\_TFS : general error c1010070: Failed to load and parse the manifest. The system cannot find the file specified. [C:\_TFS Build Agents\DEUSRV52\_work\1\s\test\App\HC100\HC100.vcxproj]
LINK(0,0): Error LNK1327: failure during running mt.exe
LINK : fatal error LNK1327: failure during running mt.exe [C:\_TFS Build Agents\DEUSRV52\_work\1\s\test\App\HC100\HC100.vcxproj]
Done Building Project "C:\_TFS Build Agents\DEUSRV52\_work\1\s\test\App\HC100\HC100.vcxproj" (default targets) -- FAILED.
Done Building Project "C:\_TFS Build Agents\DEUSRV52\_work\1\s\test\App\HC100.sln" (default targets) -- FAILED.
Build FAILED.
"C:\_TFS Build Agents\DEUSRV52\_work\1\s\test\App\HC100.sln" (default target) (1) ->
"C:\_TFS Build Agents\DEUSRV52\_work\1\s\test\App\HC100\HC100.vcxproj" (default target) (4) ->(Link target) -> C:\_TFS : general error c1010070: Failed to load and parse the manifest. The system cannot find the file specified. [C:\_TFS Build Agents\DEUSRV52\_work\1\s\test\App\HC100\HC100.vcxproj]
LINK : fatal error LNK1327: failure during running mt.exe [C:\_TFS Build Agents\DEUSRV52\_work\1\s\test\App\HC100\HC100.vcxproj]
0 Warning(s)
2 Error(s)
Time Elapsed 00:02:11.68
Process 'msbuild.exe' exited with code '1'.
Now it says that a certain file cannot be found except that the file is actually there. My guess is that something else might be wrong here.
So I went to the folder where the sources are being placed via the get sources task which is in the agent's folder structure and I then opened the solution with visual studio and build it there and again within visual studio the build is successful.
I've been looking on the internet and I found a couple of solutions such as:
disable manifest creation in the linker options menu... (this is not a solution for us since we need it)
mt.exe can't cope with spaces in the file path (strange since when opening the same files in visual studio it does build or is there something different when opening it from VS or building it with an agent?)
Digital Guardian might restrict execution (we don't have that nor can I see it in procmon)
A virus scanner might block execution (nothing is installed on the environment)
when using the Visual studio build step instead of msbuild build step in the TFS build system the build fails with exactly the same error.
I'm pretty sure that it has nothing to do with points 3 and 4 (virus scanners/ security restrictions) since I can build it successfully within the visual studio itself.
I just started to use TFS build for the first time so there is a big chance that I'm missing something here. Hopefully, someone can help me out.
I have asked this question on MSDN forums as well (https://social.msdn.microsoft.com/Forums/en-US/587b1c42-8ac6-4deb-95aa-4d74c91fd55f/msbuild-issue-on-windows-server-2012-link1327-mtexe-error-c1010070?forum=Offtopic) where I got the suggestion to ask the question here as well.
The issue is found and we have a workaround implemented.
When an Agent is defined in a path that has spaces in it mt.exe will not be able to find a file within that path. But this gets stranger because when you have a path that contains spaces and you run msbuild.exe via the command line mt.exe will find the path and the build is successful. after some testing we found out that if you combine the execution on an agent (which is located in a path that has spaces) the execution of mt.exe by the agent will have this error that mt.exe is not able to find the file. Now to completely test this and to make 100% sure that this has something to do with the agents path I created a build definition with specific execution paths. So I disabled the get sources step, removed all the sources then placed all the sources in a space free path and then ran the msbuild commands on an agent that contains spaces in its path and then it failed again.
So what we settled for is to locate our agents in a path that does not contain any spaces and now it builds just fine.

TFS 2015 upgrade: Build definition parameters parsing issue

We just upgraded to TFS2015 and now most of our builds wont work. The error looks like this:
Exception Message: The build controller cannot deserialize the process
parameters of the build. Make sure the process parameters are
compatible with the assemblies on the build machine. Details: Set
property 'Microsoft.TeamFoundation.Build.Common.BuildParameter.Json'
threw an exception. (type Exception)
[...]
Exception Message: TF401070: Could not deserialize the JSON string
provided. Details:
Error parsing comment. Expected: *, got p. Path 'MSBuildArguments', line 1, position 991. (type
BuildParameterSerializationException)
Exception Stack Trace: at Microsoft.TeamFoundation.Build.Common.BuildParameter.set_Json(String
value)
I get I have to change the MSBuild arguments so they can be parsed, but it won't let me update the Process tab of the build definition (prompts an error and all the fields are all empty) so I can't edit the parameters.
Is there a solution for this problem? Can I edit the MSBuild arguments in some other way?
In case you install "Microsoft Visual Studio Team Foundation Server 2015 Power Tools" and use the command "tfpt.exe builddefinition", make sure to fix the following error message:
1) The way to fix the above error message is to copy the missing dll ("Newtonsoft.Json.dll") to the folder "C:\Program Files (x86)\Microsoft Team Foundation Server 2015 Power Tools".
a) Make sure to open an elevated command prompt
b) Copy the file "%CommonProgramFiles%\Microsoft Shared\Team Foundation Server\14.0\Newtonsoft.Json.dll" to the folder "C:\Program Files (x86)\Microsoft Team Foundation Server 2015 Power Tools"
c) Close the "elevated command prompt" and open a regular e.g "MS VS 2015 Command Prompt"
d) Confirm that the above error message is gone.
First, make sure your build machines should match the version of your server.
The next step is to recompile any custom activity assemblies that this build machine uses, if you have.
Solved the problem.
Reinstalled TFS2013 in another server, re-pointed Visual Studio to that TFS server and then I could get the build parameters.
The error wen I opened the Build Definition process tab cleared all the fields of the build definition. So I basically inserted all the old values one by one until it failed.
The error was a TFS path that I was passing as a MSBuild argument, TFS2015 doesn't like the '$' at the beginning of the path (I guess it automatically thinks it's a TFS variable, didn't happen with 2013) so I changed it for the ASCII code '%24'. Worked just fine.
Had similar problem - but the exception only occurred when a build process had "MSBuild Arguments" present ("/maxcpucount"). Further investigation led me to discover build process information was missing from the dump files that were created. The solution specified by user7982840 corrected both problems:
Process details missing from the dump files
"Set property
'Microsoft.TeamFoundation.Build.Common.BuildParameter.Json'
threw an exception."

VS2015 build with TFS2013

I'm trying to do a teambuild for a VS2015 solution with TFS2013.
On the buildserver VS2015 is installed and I changed the buildtemplate so msbuild has an argument \tv:14.0, but when a start a build I get the following error:
C:\Program Files
(x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets (96):
Invalid static method invocation syntax:
"[Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformSDKDisplayName($(TargetPlatformIdentifier),
$(TargetPlatformVersion))". Method
'Microsoft.Build.Utilities.ToolLocationHelper.GetPlatformSDKDisplayName'
not found. Static method invocation should be of the form:
$([FullTypeName]::Method()), e.g. $([System.IO.Path]::Combine(a,
b)).
The buildserver has been restarted but I still get the error.
I also checked this thread: Build failed in TFS but no real answer was given there. Is there anyone that knows how to solve this.
I was experiencing the exact same error. I determined that TFS2013 was the RTM version so we installed TFS2013 Update 5. Now if I run using the *.12.xaml process template with the /tv:14.0 /p:VisualStudioVersion=14.0 parameters the build succeeds. I have also made a copy of the *.12.xaml build process and named it *.14.xaml and changed the Run MSBuild steps ToolVersion property to "14.0" and this build works as well, without the parameters.
You need to customize the build process template by finding all the Run MSBuild for Project MSBuild activity, then set the ToolVersion to "14.0" and set ToolPath to target to MSBuild14 (by default: "C:\Program Files (x86)\MSBuild\14.0\Bin"). After that, check in the build process template and re-queue the build.
Check the solutions here:TFS 2013 building .NET 4.6 / C# 6.0

ReSharper error when executing SonarQube analysis from TFS 2013 build

I have been setting up SonarQube analysis from a TFS 2013 build using the instructions made by Microsoft ALM Rangers:
https://vsarguidance.codeplex.com/downloads/get/1452516
It all Works fine, until I add ReSharper analysis, then i get an error;
09:51:49: ERROR: Error during Sonar runner execution
09:51:49: ERROR: Unable to execute Sonar
09:51:49: ERROR: Caused by: The property "sonar.resharper.cs.reportPath" must be set.
I have added a sonar-project.properties file to TFS in the same directory as my solution file.
The file looks like:
sonar.resharper.projectName=CommonComponents
sonar.resharper.cs.reportPath=resharperresults.xml
Im using SonarQube 5.1 and the R# 2.0 plugin
Running analysis from Jenkins Works fine.
I really hope you can help me out of this. Im pretty sure its something stupid that I just can't turn my eyes around to see.
The support of the R# by the MSBuild Runner is only going to become available in the version 1.0 of the MSBuild Runner & 2.0 of the R#. See the following tickets:
http://jira.sonarsource.com/browse/SONARMSBRU-16
http://jira.sonarsource.com/browse/SONARRSHPR-15

Using Gallio with OpenCover coverage-report file contais result but Sonar reports 0%

I have the problem that the code coverage for some reason aren't presented in Sonar.
The result of the unit tests is performed and showed correctly but not the result of the code coverage. The project is build by Jenkins. I have registered the opencover.profiler.dll file as suggested in some threads but still I get no result. Neither I get any error messages in Jenkins when performing the build.
I would be most grateful for any tips on what to do.
Best regards Dan
I think this happens because your Jenkins service is running as "Local System account", but Sonar is running OpenCover with the -register:user switch under the hoods. You should be able to bypass this either by running the Jenkins service as a regular user account, or patch the Sonar-runner to omit the -register:user switch.
It turned out however that the PDB-files caused the problems. They were included in the repository and were for some reason not recreated by the build in Jenkins. The PDB-files therefor contained the wrong path to the actual code files.
Thanks for the help!
Check for version conflicts between OpenCover and the Gallio plugin.
I found that the later versions of OPenCover (starting with Version 4.0.1229) inserted a new tag in the coverage-report.xml file - which the Gallio plugin could not understand. When I rolled back to an older version of OpenCover (4.0.804) the coverage worked again.
You can find more details on http://sonar.15.n6.nabble.com/coverage-report-xml-is-generated-but-sonar-says-coverage-is-0-td5008850.html
It looks like the Gallio plug-in has been updated, but I haven't pursued that yet (wanted to first confirm that this was the cause of the problem).

Resources