2

Visual Studio 프로젝트 템플릿을 만들려고합니다. 난 쉽게 내가 사용하여 프로젝트와 같은 이름을 갖고 싶어 사물의 이름을 대체 할 수Camel 사례 Visual Studio 프로젝트 템플릿의 프로젝트 이름

$safeprojectname$ 내 프로젝트가 WidgetHunter 이름 난 프로젝트를 만들 때이 WidgetHunter.js 호출 할 것 파일 $safeprojectname$.js 지명되었다 그래서 경우.

그러나 파일 이름을 widgetHunter.js 또는 widget-hunter.js으로 지정하려면 어떻게해야합니까?

정적 값이없는 새 변수를 만들 수 있습니까? (제공된 프로젝트 이름에 문자열 연산을 수행해야합니다.)

답변

1

이렇게하면 알 수있는 것처럼 곧장 앞으로 나옵니다. 프로젝트 템플릿은 그다지 강력하지는 않습니다. 기본 템플릿이므로 AFAIK 코드를 실제로 실행할 수 없습니다.

그러나 대체 사전에 추가 키를 추가하는 마법사 단계 (IWizard)를 쉽게 추가 할 수 있습니다. 예를 들어 조작 된 값이있는 $safeprojectnameforjs$을 추가 할 수 있습니다.

public class ExampleWizard : IWizard 
{ 
    public void RunStarted(object automationObject, Dictionary<string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams) 
    { 
     replacementsDictionary.Add("safeprojectnameforjs", 
      YourCustomMethodForManipulatingName(replacementsDictionary["safeprojectname"]) 
    } 

    // there are a few other IWizard methods you'll need to 
    // implement but don't need to do anything in 
} 

은 ExampleWizard 와이어에, 당신은 당신의 .vstemplate에

<VSTemplate> 
    <WizardExtension> 
    <Assembly>ExampleWizard.ExampleWizard, Version=1.0.0.0, Culture=neutral,  
     PublicKeyToken=a76e3e75702e3ee4</Assembly> 
     <FullClassName>ExampleWizard.ExampleWizard</FullClassName> 
    </WizardExtension> 
</VSTemplate> 

참고 태그를 추가해야합니다 : 당신은 어셈블리에서 마법사를해야합니다. 가장 쉬운 방법은 새 클래스 라이브러리 프로젝트를 만드는 것입니다. 또한 에 서명해야합니다. (적어도 여전히 필수 요건 임).

<PackageManifest> 
    <Assets> 
     <Asset Type="Microsoft.VisualStudio.Assembly" d:Source="Project" d:ProjectName="ExampleWizard.ExampleWizard" Path="|ExampleWizard.ExampleWizard|" AssemblyName="|ExampleWizard.ExampleWizard;AssemblyName|" />  
    </Assets> 
</PackageManifest> 
+0

이 당신을 위해 작동하지 않는 경우 알려줘 : 당신이 마법사 어셈블리 어셈블리 종속성으로 최대 유선 가질 수 있도록

마지막으로, 당신은, 당신의 VSIX 매니페스트를 업데이트해야합니다. 저는 전문가가 아니지만 몇 달 전에 비슷한 문제를 풀어야했습니다. 그리고 나는이 코드를 다시 작성했습니다. –

+0

적절한 산책로를 찾으려면 "VS Project Template Wizards" –