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)
12842정성태10/1/202124735오류 유형: 763. 파이썬 오류 - AttributeError: type object '...' has no attribute '...'
12841정성태10/1/20218367스크립트: 28. 모든 파이썬 프로세스에 올라오는 특별한 파일 - sitecustomize.py
12840정성태9/30/20218403.NET Framework: 1119. Entity Framework의 Join 사용 시 다중 칼럼에 대한 OR 조건 쿼리파일 다운로드1
12839정성태9/15/20219483.NET Framework: 1118. C# 11 - 제네릭 타입의 특성 적용파일 다운로드1
12838정성태9/13/20219109.NET Framework: 1117. C# - Task에 전달한 Action, Func 유형에 따라 달라지는 async/await 비동기 처리 [2]파일 다운로드1
12837정성태9/11/20218045VC++: 151. Golang - fmt.Errorf, errors.Is, errors.As 설명
12836정성태9/10/20217626Linux: 45. 리눅스 - 실행 중인 다른 프로그램의 출력을 확인하는 방법
12835정성태9/7/20218936.NET Framework: 1116. C# 10 - (15) CallerArgumentExpression 특성 추가 [2]파일 다운로드1
12834정성태9/7/20217305오류 유형: 762. Visual Studio 2019 Build Tools - 'C:\Program' is not recognized as an internal or external command, operable program or batch file.
12833정성태9/6/20216763VC++: 150. Golang - TCP client/server echo 예제 코드파일 다운로드1
12832정성태9/6/20217573VC++: 149. Golang - 인터페이스 포인터가 의미 있을까요?
12831정성태9/6/20216133VC++: 148. Golang - 채널에 따른 다중 작업 처리파일 다운로드1
12830정성태9/6/20218344오류 유형: 761. Internet Explorer에서 파일 다운로드 시 "Your current security settings do not allow this file to be downloaded." 오류
12829정성태9/5/20219995.NET Framework: 1115. C# 10 - (14) 구조체 타입에 기본 생성자 정의 가능파일 다운로드1
12828정성태9/4/20218124.NET Framework: 1114. C# 10 - (13) 단일 파일 내에 적용되는 namespace 선언파일 다운로드1
12827정성태9/4/20218114스크립트: 27. 파이썬 - 웹 페이지 데이터 수집을 위한 scrapy Crawler 사용법 요약
12826정성태9/3/202110362.NET Framework: 1113. C# 10 - (12) 문자열 보간 성능 개선 [1]파일 다운로드1
12825정성태9/3/20217908개발 환경 구성: 603. GoLand - WSL 환경과 연동
12824정성태9/2/202116982오류 유형: 760. 파이썬 tensorflow - Dst tensor is not initialized. 오류 메시지
12823정성태9/2/20216729스크립트: 26. 파이썬 - PyCharm을 이용한 fork 디버그 방법
12822정성태9/1/202111932오류 유형: 759. 파이썬 tensorflow - ValueError: Shapes (...) and (...) are incompatible [2]
12821정성태9/1/20217466.NET Framework: 1112. C# - .NET 6부터 공개된 ISpanFormattable 사용법
12820정성태9/1/20217783VC++: 147. Golang - try/catch에 대응하는 panic/recover [1]파일 다운로드1
12819정성태8/31/20217902.NET Framework: 1111. C# - FormattableString 타입
12818정성태8/31/20217143Windows: 198. 윈도우 - 작업 관리자에서 (tensorflow 등으로 인한) GPU 연산 부하 보는 방법
12817정성태8/31/20219664스크립트: 25. 파이썬 - 윈도우 환경에서 directml을 이용한 tensorflow의 AMD GPU 사용 방법
... [31]  32  33  34  35  36  37  38  39  40  41  42  43  44  45  ...