2011-11-09 4 views
10

그래서 다중 프로젝트 VS 템플릿 (Visual Studio 프로젝트 템플릿)을 수정하고 하위 템플릿에서 사용할 루트 템플릿에 사용자 지정 매개 변수를 설정하려고합니다 . 그러나 기존 매개 변수를 기반으로 설정하고 싶습니다.VSTemplate에서 평가 된 사용자 지정 매개 변수를 만드는 방법

그래서, 예를 들어,이 잘 작동 : 그것이 있어야로

<CustomParameter Name="$FaultProject$" Value="MyProject.FaultContracts"/>

변수 $ FaultProject $

는 MyProject.FaultContracts로 대체됩니다.

<CustomParameter Name="$FaultProject$" Value="$safeprojectname$.FaultContracts"/>

내가 $ safeprojectname의 $가 올바른 값으로 대체 할 것으로 예상되지만되지 않습니다 :

이,하지만 작동하지 않습니다. 대신 $ FaultProject $ 변수는 $ safeprojectname $ .FaultContracts로 대체됩니다. $ safeprojectname $는 매개 변수가 아닌 리터럴로 해석됩니다.

<ProjectTemplateLink ProjectName="$safeprojectname$.FaultContracts">WCFFaultContract\FaultContract.vstemplate</ProjectTemplateLink>

어떤 아이디어가 도움이 될 것입니다 :

이 예상대로 동일한 파일에이 정확히 작동한다는 사실에도 불구하고있다. 나는 이것을 할 수있는 IWizard 클래스를 작성할 수있을 것이라고 생각하지만 가능하다면 그러한 단순한 함수에 대해서는 피한다.

또는 루트 템플릿의 $ safeprojectname $ 값을 포함하는 매개 변수를 얻을 수 있으면 내 필요도 해결됩니다 (하위 템플릿에서 $ safeprojectname $이 하위 프로젝트 이름으로 변경됨) 루트 템플릿에있는 값이 아닙니다.

+3

이 문제를 해결하는 방법을 알고 계셨습니까? –

+3

아니요, 좋은 답변을 찾지 못했습니다. 위의 두려운 것처럼 IWizard 인터페이스를 작성해야합니다. 프로젝트 마감일은 프로젝트와 솔루션 파일을 수동으로 편집하는 것만으로 IWizard 솔루션을 작성하는 것보다 빠르다는 것을 의미하므로 나중에 다시 살펴보아야 할 것입니다. 나는 결국 다시 올 것이다 (처음부터 템플릿의 모든 부분). 팀이 작업하기 위해 모든 컴퓨터에 추가 코드를 추가하지 않아도 해결할 수있는 솔루션이 있었으면 좋겠습니다.하지만 그게 내가 남겨 두었던 것입니다. –

답변

1

다중 프로젝트 템플릿에서 기본적으로 프로젝트 레벨에서만 대체 매개 변수를 사용할 수 있습니다. 루트 템플릿은 솔루션 레벨에 있으며 기본적으로 $ safeprojectname $을 가질 수 없습니다. 그러나 IWizard 인터페이스를 구현할 수 있으며 사용자가 지정한 값으로 대체 된 자체 대체 매개 변수를 가질 수 있습니다.