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"/>
정성태

... 181  182  183  184  185  186  187  188  [189]  190  191  192  193  194  195  ...
NoWriterDateCnt.TitleFile(s)
314정성태8/11/200622676    답변글 디버깅 기술: 3.1. Managed 원격 디버깅과 WinDBG 원격 디버깅
264정성태6/1/200631704오류 유형: 6. [VC++ 컴파일] already defined in ntdll.lib(ntdll.dll)
263정성태6/1/200632768디버깅 기술: 2. 커널 구조체 살펴보기 [5]
262정성태6/1/200625266오류 유형: 5. [설치] WinFX Beta2 - 설치시 문제점 해결
261정성태6/1/200621474웹: 3. IIS 6.0 - AppPool을 활용하여 실 서버(운영 서버)에서 디버깅
258정성태6/1/200629416디버깅 기술: 1. 디버깅 방법 - CLR 프로파일러 [1]파일 다운로드1
274정성태6/7/200622458    답변글 디버깅 기술: 1.1. 디버깅 방법 - CLR 프로파일러 ( on Vista )
254정성태6/1/200618773개발 환경 구성: 2. VPC에 Vista 설치하는 방법 [2]
255정성태6/1/200618619    답변글 개발 환경 구성: 2.1. msconfig 설정과 Windows Activation
259정성태6/1/200617575    답변글 개발 환경 구성: 2.2. Vista VPC에 터미널 서비스 - 원격 접속
253정성태6/1/200615758기타: 14. .NET 2.0 이 지원되는 NDoc 2.0 을 배포합니다.
251정성태6/1/200618842오류 유형: 4. [OS 지원 API] SHParseDisplayName과 Windows 2000
252정성태6/1/200618502    답변글 오류 유형: 4.1. NET BCL 에서 제공되는 FolderBrowserDialog [2]
249정성태6/1/200618167.NET Framework: 71. VB.NET 이외의 언어에서 My 네임스페이스 사용
250정성태6/1/200620956    답변글 .NET Framework: 71.1. VB.NET 이외의 언어에서 My 네임스페이스 사용
248정성태6/1/200619256기타: 13. Code Center Premium에서 Win32 API 소스 찾기
245정성태6/1/200626657오류 유형: 3. [C# / VC++] error C2146: syntax error : missing ';' before identifier 'GetType'
247정성태5/3/200623895    답변글 .NET Framework: 3.1. Interface를 사용하면. [1]
242정성태6/1/200624428오류 유형: 2. [COM+] CreateObject 와 HTTP 500 - Internal server error
243정성태6/1/200621797    답변글 오류 유형: 2.1. [COM+] Resolve Partial Assembly failed for Microsoft.VC80.CRT.mui
244정성태6/1/200623238    답변글 오류 유형: 2.2. [COM+] Server object error 'ASP 0178 : 80070005'
240정성태6/1/200621191스크립트: 9. setTimeout 과 jscript/vbscript 혼용 문제
239정성태6/1/200622300COM 개체 관련: 18. Internet Explorer는 Out-of-process COM 개체입니다.
238정성태6/1/200624220개발 환경 구성: 1. batch 파일에서 실행한 exe에서 batch 실행 문맥의 환경 변수 설정 [3]
236정성태6/1/200644978오류 유형: 1. [.NET COM+] UnauthorizedAccessException: 레지스트리 키 HKEY_CLASSES_ROOT\.... 에 대한 액세스가 거부되었습니다
235정성태6/1/200619564VS.NET IDE: 39. VS.NET 2003/2005에서도 제공되는 VS 6.0 MFC ClassWizard
... 181  182  183  184  185  186  187  188  [189]  190  191  192  193  194  195  ...