0

최근에 Visual Studio를 업데이트하고 확장 매크로 탐색기를 사용하기 시작했습니다.Visual Studio 매크로에서 시간 지연을주는 방법

샘플 매크로 중 하나를 사용하여 "모두 제거 및 정렬"을 시도했지만 열려있는 문서가 있으면 실행되지 않습니다. 그래서 열려있는 모든 문서를 닫고 이번에는 모든 문서를 열고 닫으려고 시도하지만 다시 작동하지는 않습니다.

문제는 문서가 완전히로드되기 전에 실행되는 명령입니다. 문서로드가 완전히 끝날 때까지 기다릴 수있는 이벤트 나 타이머가 있으면 문제가 해결됩니다.

여기 내 코드입니다. 대기 기능을 추가 할 위치를 표시했습니다.

function formatFile(file) { 
    dte.ExecuteCommand("View.SolutionExplorer"); 
    if (file.Name.indexOf(".cs", file.Name.length - ".cs".length) !== -1) { 
     file.Open(); 
     file.Document.Activate(); 

//here i want to wait for 1 second 
     dte.ExecuteCommand("Edit.RemoveAndSort"); 

     file.Document.Save(); 
     file.Document.Close(); 
    } 
} 

나는 모든 종류의 도움을 주셔서 감사합니다. GitHub의에

매크로 탐색기 : https://github.com/Microsoft/VS-Macros

+0

덕분에 사랑하는 @Peh합니다. 하지만 내가 아는 한 대 매크로 메인 언어는 vba입니다. 내가 잘못? – David

+0

여러분 께 감사드립니다. vba 태그를 제거했습니다. 그러나 나는 그 자체로 충분한 질문이 분명하다고 생각한다. – David

+1

어때? 더 낫니? – David

답변

1

코드에 따라 당신이 원래 게시물에 공유 스 니펫 나는 또한 GitHub의에서 프로젝트를 복제, 코드는 자바 스크립트 코드해야합니다.

JavaScript 코드에는 setTimeout() 또는 setInterval() 함수가 있습니다. 예를 들어 setTimeout()을 사용하는 경우 일시 중지 후 실행해야하는 코드를 setTimeout() 콜백으로 이동해야합니다.

다음과 같이 코드를 수정하십시오.

function formatFile(file) { 
dte.ExecuteCommand("View.SolutionExplorer"); 
if (file.Name.indexOf(".cs", file.Name.length - ".cs".length) !== -1) { 
    file.Open(); 
    file.Document.Activate(); 


    setTimeout(function() { 
     //move the code that you want to run after 1 second 
     dte.ExecuteCommand("Edit.RemoveAndSort"); 
     file.Document.Save(); 
     file.Document.Close(); 
    }, 1000); 

} 

자바 스크립트 코드에는 sleep()에 관한 스레드가 많이 있습니다. 를 참조하십시오 :

What is the JavaScript version of sleep()?

JavaScript sleep/wait before continuing

+0

@David 위의 코드를 시도했는데 그 결과는 무엇입니까? 문제가 있으면 알려주세요. –

+0

감사합니다. @wendy. 나는 당신의 코드를 시도했지만이 예외를 잡는다 : – David

+0

Line 32 : Object expected. – David