2009-08-21 4 views
4

".... \ temp \ $ (SolutionName) \ $ (ProjectName)"과 같은 IntermediateDirectory가있는 VS 프로젝트가 있습니다.Visual Studio 매크로에서 매크로 확장 또는 추가

매크로 또는 추가 기능을 사용하여이 값을 읽을 수 있지만 파일을 조작하려면 실제 디렉토리가 필요합니다. 지금은 수동으로 "$ (SolutionName)"및 "$ (ProjectName)"을 각각의 값으로 바꾸지 만 제대로 작동하지만 속성 시트의 다른 매크로 또는 사용자 매크로를 사용할 때 복잡해 질 수 있습니다.

제 질문은 : Visual Studio API에 이러한 매크로를 확장하는 기능이 내장되어 있습니까? 아니면 다른 우아한 솔루션이 있습니까?

답변

5

우아한 해결책이 있습니다! 하지만 C++ 프로젝트에만 적용되는 것을 알고 있습니다.

당신이있어 가정 C#을 추가 기능 :


// 첫 번째 시작 프로젝트

VCProject vcMainProject = (VCProject) (_ applicationObject.Solution.SolutionBuild에서 주요 프로젝트를 가져옵니다. IVCCollection으로 StartupProjects) .Item (1);

프로젝트 mainProj = (Project) _vcMainProject .Object;

// 우리가

IVCCollection의 기가 사용될를 사용할 것입니다 구성을 가져 = (IVCCollection) _vcMainProject .Configurations;

VCC 구성 vcCfg = (VCConfiguration) cfgs.Item (mainProj.ConfigurationManager.ActiveConfiguration.ConfigurationName + "|"+ mainProj.ConfigurationManager.ActiveConfiguration.PlatformName);

문자열 finalString = vcCfg.Evaluate (".... \ temp \ $ (SolutionName) \ $ (ProjectName)");


또한이 페이지에서 확인할 수 있습니다 : 당신이 C++이를 사용하지 않는 경우, http://msdn.microsoft.com/en-us/library/czt44k0x%28VS.71%29.aspx

를 프로젝트, 구성에 대해 유사한 인터페이스가 있어야하고, 솔루션 클래스는 다른 언어에 제공 (C# 및 VB).

+0

그것이 바로 제가 찾고 있던 것입니다! 감사! –

0

내가 아는 한, 매크로 값을 확장 할 API는 없습니다. 비록 당신이 신경 쓰는 가치들만을 다루는 빠르고 지저분한 구현을 작성하는 것이 너무 어렵지는 않지만.

예를 들어,이 경우에는 약 2 개의 값만 고려합니다 (SolutionName 및 ProjectName). 이들 값이 주로 관심이있는 값이면 간단한 검색을 사용하고 최상의 값으로 대체하십시오.

예이 방법은 차선책입니다. 그러나 귀하의 진전을 차단하는 데 도움이 될 수 있습니다.

+0

그래, 나는 당신이 이미 제안한 빠르고 더러운 해결책을 가지고있다. 그것은 현재 작동합니다. 가장 큰 문제는 VS 속성 시트의 "UserMacro"입니다. 나는 그들에게 접근하는 방법에 대한 단서가 없습니다 ... –

관련 문제