Met behulp van deze blogpost heb ik het voor elkaar gekregen om een item template met wizard te maken. Dit is allemaal leuk en wel en Visual Studio ziet hem maar zodra ik via 'New Item...' deze template probeer te gebruiken in mijn project geeft hij een NullReferenceException (of in ieder geval de vast Message daarvoor: Reference not set...). Ik vermoed dat het een probleem in Visual Studio is, want ik heb alle code in mijn template class library al gecomment, en het probleem blijft.
De code ziet er nu globaal zo uit:
En het template bestand, in het zip bestand:
Ik heb al van alles geprobeerd, zoals heel de WizardExtension node weg te halen, de class library compileren als x86 in plaats van 'Any CPU'. Uiteraard is de assembly met een eigen sleutel gesigned.
Ik denk niet dat ik mijn bad search day hebt, maar via Google kan ik alleen ASP.NET gerelateerde dingen vinden of verouderd omdat het dan over Visual Studio 2003 gaat. Heeft iemand een idee waar ik het probleem moet zoeken?
De code ziet er nu globaal zo uit:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| public class WorkerClassGeneratorWizard : IWizard { private WorkerClassGeneratorForm GeneratorForm { get; set; } void IWizard.BeforeOpeningFile(ProjectItem projectItem) { // nothing } void IWizard.ProjectFinishedGenerating(Project project) { // nothing } void IWizard.ProjectItemFinishedGenerating(ProjectItem projectItem) { // nothing } void IWizard.RunFinished() { // nothing } void IWizard.RunStarted(object automationObject, System.Collections.Generic.Dictionary<string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams) { // *snip* } bool IWizard.ShouldAddProjectItem(string filePath) { return true; } } |
En het template bestand, in het zip bestand:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| <VSTemplate Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item"> <TemplateData> <DefaultName>WorkerClass.cs</DefaultName> <Name>WorkerClass</Name> <Description>Generate a threaded worker class</Description> <ProjectType>CSharp</ProjectType> <SortOrder>10</SortOrder> <Icon>__TemplateIcon.ico</Icon> </TemplateData> <TemplateContent> <References> <Reference> <Assembly>System</Assembly> </Reference> <Reference> <Assembly>mscorlib</Assembly> </Reference> </References> <ProjectItem SubType="Code" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">WorkerClass.cs</ProjectItem> <ProjectItem SubType="Code" TargetFileName="$fileinputname$Events.cs" ReplaceParameters="true">WorkerClassEvents.cs</ProjectItem> </TemplateContent> <WizardExtension> <Assembly>WorkerClassGenerator, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=c932d90a0f5ae872</Assembly> <FullClassName>WorkerClassGeneratorWizard</FullClassName> </WizardExtension> </VSTemplate> |
Ik heb al van alles geprobeerd, zoals heel de WizardExtension node weg te halen, de class library compileren als x86 in plaats van 'Any CPU'. Uiteraard is de assembly met een eigen sleutel gesigned.
Ik denk niet dat ik mijn bad search day hebt, maar via Google kan ik alleen ASP.NET gerelateerde dingen vinden of verouderd omdat het dan over Visual Studio 2003 gaat. Heeft iemand een idee waar ik het probleem moet zoeken?
[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]