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

... 46  47  48  49  50  51  [52]  53  54  55  56  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
12345정성태9/25/20208868오류 유형: 656. iisreset 실행 시 "Restart attempt failed." 오류가 발생하지만 웹 서비스는 정상적인 경우파일 다운로드1
12344정성태9/25/202010037Windows: 173. 서비스 관리자에 "IIS Admin Service"가 등록되어 있지 않다면?
12343정성태9/24/202019753.NET Framework: 945. C# - 닷넷 응용 프로그램에서 메모리 누수가 발생할 수 있는 패턴 [5]
12342정성태9/24/202010985디버깅 기술: 171. windbg - 인스턴스가 살아 있어 메모리 누수가 발생하고 있는지 확인하는 방법
12341정성태9/23/202010076.NET Framework: 944. C# - 인스턴스가 살아 있어 메모리 누수가 발생하고 있는지 확인하는 방법파일 다운로드1
12340정성태9/23/20209811.NET Framework: 943. WPF - WindowsFormsHost를 담은 윈도우 생성 시 메모리 누수
12339정성태9/21/20209853오류 유형: 655. 코어 모드의 윈도우는 GUI 모드의 윈도우로 교체가 안 됩니다.
12338정성태9/21/20209376오류 유형: 654. 우분투 설치 시 "CHS: Error 2001 reading sector ..." 오류 발생
12337정성태9/21/202010721오류 유형: 653. Windows - Time zone 설정을 바꿔도 반영이 안 되는 경우
12336정성태9/21/202013203.NET Framework: 942. C# - WOL(Wake On Lan) 구현
12335정성태9/21/202022604Linux: 31. 우분투 20.04 초기 설정 - 고정 IP 및 SSH 설치
12334정성태9/21/20208011오류 유형: 652. windbg - !py 확장 명령어 실행 시 "failed to find python interpreter"
12333정성태9/20/20208413.NET Framework: 941. C# - 전위/후위 증감 연산자에 대한 오버로딩 구현 (2)
12332정성태9/18/202010509.NET Framework: 940. C# - Windows Forms ListView와 DataGridView의 예제 코드파일 다운로드1
12331정성태9/18/20209653오류 유형: 651. repadmin /syncall - 0x80090322 The target principal name is incorrect.
12330정성태9/18/202010702.NET Framework: 939. C# - 전위/후위 증감 연산자에 대한 오버로딩 구현 [2]파일 다운로드1
12329정성태9/16/202012607오류 유형: 650. ASUS 메인보드 관련 소프트웨어 설치 후 ArmouryCrate.UserSessionHelper.exe 프로세스 무한 종료 현상
12328정성태9/16/202012823VS.NET IDE: 150. TFS의 이력에서 "Get This Version"과 같은 기능을 Git으로 처리한다면?
12327정성태9/12/202010386.NET Framework: 938. C# - ICS(Internet Connection Sharing) 제어파일 다운로드1
12326정성태9/12/20209880개발 환경 구성: 516. Azure VM의 Network Adapter를 실수로 비활성화한 경우
12325정성태9/12/20209469개발 환경 구성: 515. OpenVPN - 재부팅 후 ICS(Internet Connection Sharing) 기능이 동작 안하는 문제
12324정성태9/11/202010736개발 환경 구성: 514. smigdeploy.exe를 이용한 Windows Server 2016에서 2019로 마이그레이션 방법
12323정성태9/11/20209609오류 유형: 649. Copy Database Wizard - The job failed. Check the event log on the destination server for details.
12322정성태9/11/202010699개발 환경 구성: 513. Azure VM의 RDP 접속 위치 제한 [1]
12321정성태9/11/20208916오류 유형: 648. netsh http add urlacl - Error: 183 Cannot create a file when that file already exists.
12320정성태9/11/202010105개발 환경 구성: 512. RDP(원격 데스크톱) 접속 시 비밀 번호를 한 번 더 입력해야 하는 경우
... 46  47  48  49  50  51  [52]  53  54  55  56  57  58  59  60  ...