I'm using Azure Websites git deploy (via Kudu), and everything has been going great, until today. When I do a new git push, and it tries to deploy, I get this error message while my tests are running:
Error: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualStudio.QualityTools.UTFResources, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
I haven't added or removed any libraries or other references from my solution between the last successful push and when I started getting this errors. Googling doesn't turn up anything. That file is in my local GAC, but I can't find it referenced directly anywhere in my solution.
Redeploying an old version of my solution - a version that deployed correctly earlier in the day - fails with the same error message.
If I didn't know better, I'd think that MS changed something on their end and broke kudu.
Any thoughts about troubleshooting this, shy of opening a ticket with Azure?
EDIT - More Details:
It's failing while running the unit tests. Here's the relevant portion of my deploy.cmd:
:: 1. Build to the temporary path
IF /I "%IN_PLACE_DEPLOYMENT%" NEQ "1" (
%MSBUILD_PATH% "%DEPLOYMENT_SOURCE%\Payboard.Web\Payboard.Web.csproj" /nologo /verbosity:m /t:Build /t:pipelinePreDeployCopyAllFilesToOneFolder /p:_PackageTempDir="%DEPLOYMENT_TEMP%";AutoParameterizationWebConfigConnectionStrings=false;Configuration=Release /p:SolutionDir="%DEPLOYMENT_SOURCE%\.\\" %SCM_BUILD_ARGS%
) ELSE (
%MSBUILD_PATH% "%DEPLOYMENT_SOURCE%\Payboard.Web\Payboard.Web.csproj" /nologo /verbosity:m /t:Build /p:AutoParameterizationWebConfigConnectionStrings=false;Configuration=Release /p:SolutionDir="%DEPLOYMENT_SOURCE%\.\\" %SCM_BUILD_ARGS%
)
IF !ERRORLEVEL! NEQ 0 (
echo Build failed with ErrorLevel !0!
goto error
)
:: 2. Building test projects
rem echo Building test projects
"%MSBUILD_PATH%" "%DEPLOYMENT_SOURCE%\PayboardWeb.sln" /p:Configuration=NoDatabase;VisualStudioVersion=12.0 /verbosity:m /p:Platform="Any CPU"
IF !ERRORLEVEL! NEQ 0 (
echo Build failed with ErrorLevel !0!
goto error
)
:: 3. Running tests
echo Running tests
vstest.console.exe "%DEPLOYMENT_SOURCE%\Payboard.Common.Tests\bin\NoDatabase\Payboard.Common.Tests.dll"
IF !ERRORLEVEL! NEQ 0 goto error
vstest.console.exe "%DEPLOYMENT_SOURCE%\Payboard.Model.Tests\bin\NoDatabase\Payboard.Model.Tests.dll"
IF !ERRORLEVEL! NEQ 0 goto error
vstest.console.exe "%DEPLOYMENT_SOURCE%\Payboard.Services.Tests\bin\NoDatabase\Payboard.Services.Tests.dll"
IF !ERRORLEVEL! NEQ 0 goto error
vstest.console.exe "%DEPLOYMENT_SOURCE%\Payboard.Integrations.Tests\bin\NoDatabase\Payboard.Integrations.Tests.dll"
IF !ERRORLEVEL! NEQ 0 goto error
vstest.console.exe "%DEPLOYMENT_SOURCE%\Payboard.Web.Tests\bin\NoDatabase\Payboard.Web.Tests.dll"
IF !ERRORLEVEL! NEQ 0 goto error
It's failing during the first call to vstest.console.exe
, after successfully running a whole bunch of the unit tests, but before finishing. Here's an example of the log file:
Passed ConditionalFormatting_ShouldHandleSimpleConditions
Passed ConditionalFormatting_ShouldHandleComplexNumericConditions
Passed ConditionalFormatting_ShouldHandleNullStrings
Passed ConditionalFormatting_ShouldHandleNullObjects
Error: Exception thrown executing tests in D:\home\site\repository\Payboard.Common.Tests\bin\NoDatabase\Payboard.Common.Tests.dll
Passed ShallowClone_ShouldCopyIntegers
Passed ShallowClone_ShouldCopyNullableIntegers
Error: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualStudio.QualityTools.UTFResources, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
Passed ShallowClone_ShouldCopyStrings
File name: 'Microsoft.VisualStudio.QualityTools.UTFResources, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
Passed ShallowClone_ShouldNotCopyReferences
Passed ShallowClone_ShouldReturnNullIfSourceIsNull
Server stack trace:
Passed ShallowCopyTo_ShouldCopyIntegers
at Microsoft.VisualStudio.TestTools.UnitTesting.ExpectedExceptionAttribute..ctor(Type exceptionType, String noExceptionMessage)
Passed ShallowCopyTo_ShouldCopyNullableIntegers
at Microsoft.VisualStudio.TestTools.UnitTesting.ExpectedExceptionAttribute..ctor(Type exceptionType)
Passed ShallowCopyTo_ShouldCopyStrings
at System.Reflection.CustomAttribute._CreateCaObject(RuntimeModule pModule, IRuntimeMethodInfo pCtor, Byte** ppBlob, Byte* pEndBlob, Int32* pcNamedArgs)
Passed ShallowCopyTo_ShouldNotCopyReferences
at System.Reflection.CustomAttribute.CreateCaObject(RuntimeModule module, IRuntimeMethodInfo ctor, IntPtr& blob, IntPtr blobEnd, Int32& namedArgs)
Passed ShallowCopyTo_ShouldNotCopyExceptions
at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent)
Passed ShallowCopyTo_ShouldNotCopyExceptionExpressions
at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeMethodInfo method, RuntimeType caType, Boolean inherit)
Passed GetFriendlyTypeName_ShouldHandleSimpleTypes
at System.Reflection.RuntimeMethodInfo.GetCustomAttributes(Boolean inherit)
Passed GetFriendlyTypeName_ShouldHandleComplexTypes
at NUnit.Core.Reflect.GetAttributes(ICustomAttributeProvider member, Boolean inherit)
Passed GetFriendlyTypeName_ShouldHandleReallyComplexTypes
at NUnit.Core.Reflect.HasAttribute(ICustomAttributeProvider member, String attrName, Boolean inherit)
Passed MultiDateTimeConverter_ShouldSupportMultipleFormats
at NUnit.Core.Reflect.HasMethodWithAttribute(Type fixtureType, String attributeName, Boolean inherit)
Passed OrIfGreater_ShouldSelectGreaterValue
at NUnit.Core.Builders.NUnitTestFixtureBuilder.CanBuildFrom(Type type)
Passed OrIfGreater_ShouldSelectRealValue
at NUnit.Core.Extensibility.SuiteBuilderCollection.CanBuildFrom(Type type)
Passed OrIfLesser_ShouldSelectGreaterValue
at NUnit.Core.TestFixtureBuilder.CanBuildFrom(Type type)
Passed OrIfLesser_ShouldSelectRealValue
at NUnit.Core.Builders.TestAssemblyBuilder.GetFixtures(Assembly assembly, String ns)
Passed GetKey_ShouldSupportStrings
at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName, Boolean autoSuites)
Passed GetKey_ShouldSupportInts
at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName, String testName, Boolean autoSuites)
Passed GetKey_ShouldSupportDates
at NUnit.Core.TestSuiteBuilder.BuildSingleAssembly(TestPackage package)
Passed ForEachParallel_ShouldExecuteAllActions
at NUnit.Core.TestSuiteBuilder.Build(TestPackage package)
Passed ForEachParallel_ShouldExecuteWithMaxParallelization
at NUnit.Core.SimpleTestRunner.Load(TestPackage package)
Passed SelectParallel_ShouldSelectAllData
at NUnit.Core.ProxyTestRunner.Load(TestPackage package)
Passed SelectParallel_ShouldSelectWithMaxParallelization
at NUnit.Core.ProxyTestRunner.Load(TestPackage package)
Passed SortOfMatches_ShouldMatchSameUrls
at NUnit.Core.RemoteTestRunner.Load(TestPackage package)
Passed SortOfMatches_ShouldIgnoreQueryStrings
at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
Passed SortOfMatches_ShouldIgnoreShortPrefixes
at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)
Passed SortOfMatches_ShouldNotMatchOnPathMismatch
Passed SortOfMatches_ShouldNotMatchOnHostMismatch
Exception rethrown at [0]:
Passed MainDomain_ShouldRemoveWww
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
Passed MainDomain_ShouldRemoveApp
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
Passed MainDomain_ShouldNotRemoveExample
at NUnit.Core.TestRunner.Load(TestPackage package)
Passed MainDomain_ShouldNotRemoveMainDomain
at NUnit.Util.TestDomain.Load(TestPackage package)
Passed MainDomain_ShouldHandleCountryDomains
at NUnit.VisualStudio.TestAdapter.NUnitTestExecutor.RunAssembly(String assemblyName, ITestExecutionRecorder testLog, TestFilter filter, IRunContext runContext)
Total tests: 117. Passed: 116. Failed: 0. Skipped: 1.
Test execution time: 7.5134 Seconds
An error has occurred during web site deployment.
Test Run Failed.
I should note that if I comment out the calls to the unit tests, I can get it to deploy. So I suppose the question is basically - what can I do to get my unit tests running again? Is it possible that the recent update to the Azure websites - the one that supported, among other things, TypeScript 1.1 - could have possibly removed Microsoft.VisualStudio.QualityTools.UTFResources.dll
from the GAC? Or something along those lines?
Have a look here:
https://developercommunity.visualstudio.com/content/problem/35104/systemiofilenotfoundexception-utfresourcesdll.html
The suggestion was to de-reference Microsoft.VisualStudio.QualityTools.UnitTestFramework and add NuGet packages MSTest.TestFramework and MSTest.TestAdapter
On my VSTS build definition, I also had to change the checkout process to clean the All Build Directories
This solved the FileNotFound exception I was getting for the same DLL.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With