我正在使用Azure网站git deploy(通过Kudu),一切都很顺利,直到今天。当我执行新的git push并尝试部署时,我在测试运行时收到此错误消息:
错误:System.IO.FileNotFoundException:无法加载文件或程序集“Microsoft.VisualStudio.QualityTools.UTFResources,Version = 10.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”或其依赖项之一。系统找不到指定的文件。
在上次成功推送和我开始收到此错误之间,我没有添加或删除我的解决方案中的任何库或其他引用。谷歌搜索没有任何结果。该文件位于我当地的GAC中,但我无法在我的解决方案中的任何地方直接引用它。
重新部署我的解决方案的旧版本 - 在当天早些时候正确部署的版本 - 失败并显示相同的错误消息。
如果我不知道更好,我会认为MS改变了一些东西并打破了kudu。
有关解决此问题的任何想法,不愿意用Azure打开票证吗?
编辑 - 更多详情:
运行单元测试时失败了。这是我的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
在成功运行一大堆单元测试后,在完成之前,第一次调用vstest.console.exe
时失败了。以下是日志文件的示例:
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.
我应该注意,如果我注释掉单元测试的调用,我可以让它进行部署。所以我认为问题基本上是 - 我可以做些什么来让我的单元测试再次运行?是否有可能最近对Azure网站的更新(支持TypeScript 1.1等)可能已从GAC中删除了Microsoft.VisualStudio.QualityTools.UTFResources.dll
?或者沿着这些方向做什么?
答案 0 :(得分:8)
看看这里:
建议取消引用 Microsoft.VisualStudio.QualityTools.UnitTestFramework 并添加NuGet包 MSTest.TestFramework 和 MSTest.TestAdapter < / p>
在我的VSTS构建定义中,我还必须更改结帐流程以清除所有构建目录
这解决了我为同一个DLL获取的FileNotFound异常。
答案 1 :(得分:2)
正如评论中所讨论的,这似乎是最近的回归。我已经打开https://github.com/projectkudu/kudu/issues/1370来跟踪它并进一步讨论。
答案 2 :(得分:0)
我只是将版本从 10.1.0.0 降低到 10.0.0.0。它奏效了!!!