Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

(시리즈 글이 6개 있습니다.)
오류 유형: 534. mstest.exe 실행 시 "Visual Studio Enterprise is required to execute the test." 오류
; https://www.sysnet.pe.kr/2/0/11886

개발 환경 구성: 438. mstest, QTAgent의 로그 파일 설정 방법
; https://www.sysnet.pe.kr/2/0/11889

개발 환경 구성: 439. "Visual Studio Enterprise is required to execute the test." 메시지와 관련된 코드 기록
; https://www.sysnet.pe.kr/2/0/11890

오류 유형: 539. mstest 실행 시 "The directory name is invalid." 오류 발생
; https://www.sysnet.pe.kr/2/0/11902

오류 유형: 575. mstest.exe - System.Resources.MissingSatelliteAssemblyException: The satellite assembly named "Microsoft.VisualStudio.ProductKeyDialog.resources.dll, ..."
; https://www.sysnet.pe.kr/2/0/12044

오류 유형: 576. mstest.exe 실행 시 "Visual Studio Enterprise is required to execute the test." 오류 - 두 번째 이야기
; https://www.sysnet.pe.kr/2/0/12045




mstest.exe 실행 시 "Visual Studio Enterprise is required to execute the test." 오류

mstest.exe 실행 시 다음과 같이 "Visual Studio Enterprise" 버전이 아니라는 오류가 뜹니다.

c:\temp> mstest.exe /testcontainer:c:\temp\test.loadtest
??Microsoft (R) Test Execution Command Line Tool Version 16.0.28326.58
Copyright (c) Microsoft Corporation. All rights reserved.

Loading c:\temp\test.loadtest...
Starting execution...

Results               Top Level Tests
-------               ---------------
Error                 c:\temp\test.loadtest
0/1 test(s) Passed, 1 Error

Summary
-------
Test Run Warning.
  Error  1
  --------
  Total  1
Results file:  c:\temp\TestResults\TestUsr_TESTPC 2019-05-07 14_32_04.trx
Test Settings: Default Test Settings

Run has the following issue(s):
Visual Studio Enterprise is required to execute the test.

이벤트 로그를 보면 이런 결과도 볼 수 있습니다.

Log Name:      Application
Source:        VSTTExecution
Date:          2019-05-07 오후 4:25:41
Event ID:      0
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      TESTPC
Description:
The description for Event ID 0 from source VSTTExecution cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.

If the event originated on another computer, the display information had to be saved with the event.

The following information was included with the event: 

(mstest.exe, PID 24268, Thread 21) ControllerExecution: Received exception calling InitializePlugin for test e77946db-2d9f-4453-b207-e1e3f83f7784: Microsoft.VisualStudio.TestTools.WebStress.LoadTestLicenseViolationException: Visual Studio Enterprise is required to execute the test.
   at Microsoft.VisualStudio.TestTools.WebStress.LoadTestUserLicenseManager.CheckForLoadTestExecution()
   at Microsoft.VisualStudio.TestTools.WebStress.LoadTestResultsCollector.Initialize(TestRun testRun, String[] agentNames)
   at Microsoft.VisualStudio.TestTools.WebStress.LoadTestControllerPlugin.Initialize(IControllerContext testContext)
   at Microsoft.VisualStudio.TestTools.Controller.ControllerPluginManager.InitializePlugin(Guid executionId)
   at Microsoft.VisualStudio.TestTools.Controller.ControllerExecution.SignalSyncStart(Object state)

The message resource is present but the message was not found in the message table

Log Name:      Application
Source:        VSTTExecution
Date:          2019-05-07 오후 4:25:41
Event ID:      0
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      TESTPC
Description:
The description for Event ID 0 from source VSTTExecution cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.

If the event originated on another computer, the display information had to be saved with the event.

The following information was included with the event: 

(mstest.exe, PID 24268, Thread 21) WebLoadTestAdapter: Exception in LoadTestControllerPlugin.Initialize(): 

The message resource is present but the message was not found in the message table

Log Name:      Application
Source:        VSTTExecution
Date:          2019-05-07 오후 4:25:41
Event ID:      0
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      TESTPC
Description:
The description for Event ID 0 from source VSTTExecution cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.

If the event originated on another computer, the display information had to be saved with the event.

The following information was included with the event: 

(mstest.exe, PID 24268, Thread 21) WebLoadTestAdapter: LoadTestResultsCollector: Reporting exception: Microsoft.VisualStudio.TestTools.WebStress.LoadTestLicenseViolationException: Visual Studio Enterprise is required to execute the test.
   at Microsoft.VisualStudio.TestTools.WebStress.LoadTestUserLicenseManager.CheckForLoadTestExecution()
   at Microsoft.VisualStudio.TestTools.WebStress.LoadTestResultsCollector.Initialize(TestRun testRun, String[] agentNames)

The message resource is present but the message was not found in the message table

어쨌든 중요한 것은, 현재 설치된 Enterprise 버전을 인식하지 못하는 것입니다.




원인 파악을 위해서는 오류 로그가 필요합니다. 따라서 mstest.exe.config 파일에,

[Visual Studio 2019]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\MSTest.exe.config

[Visual Studio 2017]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\MSTest.exe.config

다음의 설정을 추가합니다.

<?xml version ="1.0"?>
<configuration>
    <!-- ...[생략]... -->

    <!-- 참고: https://learn.microsoft.com/en-us/archive/blogs/aseemb/how-to-enable-test-agent-logs/ -->
    <system.diagnostics>
        <switches>
            <add name="EqtTraceLevel" value="4" />
        </switches>
        <trace autoflush="true">
            <listeners>
                <add name="eqtlistener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\Temp\TestRunner0.log"/>
            </listeners>
        </trace>
    </system.diagnostics>
</configuration>

이제 다시 실행해 보면 C:\Temp\TestRunner0.log 파일이 생성되고 그 안에서 오류가 있다면 해결해야 합니다. 제 경우에는 다음과 같은 오류 로그가 있었습니다.

V, 16708, 1, 2019/05/07, 22:52:58.305, TESTPC\mstest.exe, WebLoadTestAdapter: LicenseHandler(): Failed to Initialize LoadTestLicense Info: System.IO.FileLoadException: Could not load file or assembly 'Microsoft.VisualStudio.Threading, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'Microsoft.VisualStudio.Threading, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
   at Microsoft.VisualStudio.ProductLicensing.VsLicensingState.InitializeForPidAndOnlineLicensing(Object joinableTaskContext, Int32 productFamily, Guid& subscriptionLicenseId, String subscriptionRightsName, String registryRoot, IVsClientRightsTokenCacheManager clientRightsTokenCacheManager, IVsOnlineLicensingManager onlineLicensingManager)
   at Microsoft.VisualStudio.Shell.Connected.OnlineLicensing.ForNonVsClientsOnly.VsLicensingStateInitializationHelpers.CreateIVsLicensingStateForOnlineLicensingSKU(OnlineLicensingSKUs sku)
   at Microsoft.VisualStudio.TestTools.WebStress.LicenseHandler.InitializeLoadTestLicenseInfo()
   at Microsoft.VisualStudio.TestTools.WebStress.LicenseHandler..ctor()

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

실제로 Microsoft.VisualStudio.Threading.dll을 확인해 보면,

C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\PrivateAssemblies\Microsoft.VisualStudio.Threading.dll

16.0.0.0 버전이 아닌 15.8.0.0 버전이 있었습니다. 그래서 mstest.exe.config에서 15.8.0.0 버전도 로드하도록 다음과 같이 bindingRedirect 항목을 조정합니다.

<?xml version ="1.0"?>
<configuration>
    <!-- ...[생략]... -->
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <!-- ...[생략]... -->
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.VisualStudio.Threading" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
                <!--bindingRedirect oldVersion="12.0.0.0-15.6.0.0" newVersion="15.6.0.0"/-->
                <bindingRedirect oldVersion="12.0.0.0-16.0.0.0" newVersion="15.8.0.0"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
    <!-- ...[생략]... -->
</configuration>

다시 실행해 보면, C:\Temp\TestRunner0.log 파일에는 해당 오류가 발생하지 않으며 경우에 따라 더 이상 문제가 없다면 정상적으로 mstest.exe가 동작할 것입니다.




그런데, 제 경우에 그래도 동작하지 않았습니다. 재미있는 것은 TestRunner0.log 파일을 보면 다음과 같이 분명히 Enterprise 버전임을 인식했습니다.

V, 1644, 1, 2019/05/07, 23:20:38.376, TESTPC\mstest.exe, WebLoadTestAdapter: LicenseHandler.InitializeLoadTestLicenseInfo(): skuEdition: VSEDITION_Ultimate
E, 1644, 1, 2019/05/07, 23:20:38.451, TESTPC\mstest.exe, WebLoadTestAdapter: LicenseHandler.UpdateLicensingInformation(): clientrights' license is not valid.

하지만, "clientrights' license is not valid"라는 문구로 해당 라이선스가 정상적이지 않다고 합니다. 사실 이 문제의 근본 원인은 저도 모르겠습니다. 대신 이를 해결하려면 비주얼 스튜디오의 라이선스를 "제품키"를 입력하는 방법으로 전환해야 합니다. 이를 위해 "Help" / "About Microsoft Visual Studio" 메뉴를 선택하면 나오는 창에서 "License status"를 눌러,

load_test_vs_ent_required_0.png

다음과 같은 라이선스 상태 창을 띄웁니다.

load_test_vs_ent_required_1.png

위의 화면에서 "Visual Studio Enterprise 2019"의 경우 제품키 입력으로 활성화된 상태가 아니고, 아래의 "Visual Studio Enterprise 2017"은 "License Product key applied"라는 문구와 함께 제품키로 활성화되었음을 나타냅니다. 따라서 "Unlock with a Product Key" 링크를 눌러 MSDN 제품키를 입력해 줍니다.

그렇게 하고 나면 정상적으로 mstest.exe가 실행되고 로그 파일에도 licenseType을 다음과 같이 인식하는 것을 확인할 수 있습니다.

V, 1644, 1, 2019/05/07, 23:20:38.376, TESTPC\mstest.exe, WebLoadTestAdapter: LicenseHandler.InitializeLoadTestLicenseInfo(): skuEdition: VSEDITION_Ultimate
V, 28792, 1, 2019/05/07, 23:32:26.281, TESTPC\mstest.exe, WebLoadTestAdapter: LicenseHandler.UpdateLicensingInformation(): licenseType: VSLICTYPE_UnlimitedPID




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 2/15/2024]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2019-09-12 07시00분
[Liraz] It didn't work for me
[guest]
2019-10-02 10시25분
Visual Studio 16.x 버전 업데이트 이후에는 binding 버전을 16.3.0.0으로 올려야 합니다.

<bindingRedirect oldVersion="12.0.0.0-16.3.0.0" newVersion="15.8.0.0"/>
정성태

... 31  32  33  34  35  [36]  37  38  39  40  41  42  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
12731정성태7/23/20217581개발 환경 구성: 584. Add Internal URLs 화면에서 "Save" 버튼이 비활성화 된 경우
12730정성태7/23/20219082개발 환경 구성: 583. Visual Studio Code - Go 코드에서 입력을 받는 경우
12729정성태7/22/20218030.NET Framework: 1080. xUnit 단위 테스트에 메서드/클래스 수준의 문맥 제공 - Fixture
12728정성태7/22/20217519.NET Framework: 1079. MSTestv2 단위 테스트에 메서드/클래스/어셈블리 수준의 문맥 제공
12727정성태7/21/20218476.NET Framework: 1078. C# 단위 테스트 - MSTestv2/NUnit의 Assert.Inconclusive 사용법(?) [1]
12726정성태7/21/20218306VS.NET IDE: 169. 비주얼 스튜디오 - 단위 테스트 선택 시 MSTestv2 외의 xUnit, NUnit 사용법 [1]
12725정성태7/21/20217029오류 유형: 741. Failed to find the "go" binary in either GOROOT() or PATH
12724정성태7/21/20219718개발 환경 구성: 582. 윈도우 환경에서 Visual Studio Code + Go (Zip) 개발 환경 [1]
12723정성태7/21/20217341오류 유형: 740. SharePoint - Alternate access mappings have not been configured 경고
12722정성태7/20/20217205오류 유형: 739. MSVCR110.dll이 없어 exe 실행이 안 되는 경우
12721정성태7/20/20217866오류 유형: 738. The trust relationship between this workstation and the primary domain failed. - 세 번째 이야기
12720정성태7/19/20217196Linux: 43. .NET Core/5+ 응용 프로그램의 Ubuntu (Debian) 패키지 준비
12719정성태7/19/20216344오류 유형: 737. SharePoint 설치 시 "0x800710D8 The object identifier does not represent a valid object." 오류 발생
12718정성태7/19/20216921개발 환경 구성: 581. Windows에서 WSL로 파일 복사 시 root 소유권으로 적용되는 문제파일 다운로드1
12717정성태7/18/20216877Windows: 195. robocopy에서 파일의 ADS(Alternate Data Stream) 정보 복사를 제외하는 방법
12716정성태7/17/20217713개발 환경 구성: 580. msbuild의 Exec Task에 robocopy를 사용하는 방법파일 다운로드1
12715정성태7/17/20219391오류 유형: 736. Windows - MySQL zip 파일 버전의 "mysqld --skip-grant-tables" 실행 시 비정상 종료 [1]
12714정성태7/16/20218172오류 유형: 735. VCRUNTIME140.dll, MSVCP140.dll, VCRUNTIME140.dll, VCRUNTIME140_1.dll이 없어 exe 실행이 안 되는 경우
12713정성태7/16/20218715.NET Framework: 1077. C# - 동기 방식이면서 비동기 규약을 따르게 만드는 Task.FromResult파일 다운로드1
12712정성태7/15/20218117개발 환경 구성: 579. Azure - 리눅스 호스팅의 Site Extension 제작 방법
12711정성태7/15/20218451개발 환경 구성: 578. Azure - Java Web App Service를 위한 Site Extension 제작 방법
12710정성태7/15/202110262개발 환경 구성: 577. MQTT - emqx.io 서비스 소개
12709정성태7/14/20216886Linux: 42. 실행 중인 docker 컨테이너에 대한 구동 시점의 docker run 명령어를 확인하는 방법
12708정성태7/14/202110279Linux: 41. 리눅스 환경에서 디스크 용량 부족 시 원인 분석 방법
12707정성태7/14/202177509오류 유형: 734. MySQL - Authentication method 'caching_sha2_password' not supported by any of the available plugins.
12706정성태7/14/20218729.NET Framework: 1076. C# - AsyncLocal 기능을 CallContext만으로 구현하는 방법 [2]파일 다운로드1
... 31  32  33  34  35  [36]  37  38  39  40  41  42  43  44  45  ...