7

नहीं दिखा रहा है मुझे अपने विजुअल स्टूडियो टेम्पलेट विज़ार्ड के गुई को दिखाने में समस्याएं आ रही हैं। http://msdn.microsoft.com/en-us/library/ms185301.aspxवीएस2012 टेम्पलेट विज़ार्ड - जीयूआई

यहाँ मैं क्या किया है::

1) एक सी # वर्ग पुस्तकालय (.dll जनरेट किया गया) निम्नलिखित फ़ाइलों में: मैं इन चरणों का पालन

UserInputForm.cs

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace myprojectvstemplate 
{ 
    public partial class UserInputForm : Form 
    { 
     private string customMessage; 

     public UserInputForm() 
     { 

      InitializeComponent(); 
      MessageBox.Show("here, calling ui"); 
     } 

     public string get_CustomMessage() 
     { 
      return customMessage; 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      customMessage = textBox1.Text; 

      this.Dispose(); 
     } 
    } 
} 

2) एक संपादन बॉक्स के साथ एक उपयोगकर्ता इनपुट फॉर्म और कोड UserInputForm.cs के साथ एक combobox जोड़ा गया

using System; 
using System.Collections.Generic; 
using Microsoft.VisualStudio.TemplateWizard; 
using System.Windows.Forms; 
using EnvDTE; 

namespace myprojectvstemplate 
{ 
    public class IWizardImplementation : IWizard 
    { 
     private UserInputForm inputForm; 
     private string customMessage; 

     // This method is called before opening any item that 
     // has the OpenInEditor attribute. 
     public void BeforeOpeningFile(ProjectItem projectItem) 
     { 

     } 

     public void ProjectFinishedGenerating(Project project) 
     { 

     } 

     // This method is only called for item templates, 
     // not for project templates. 
     public void ProjectItemFinishedGenerating(ProjectItem 
      projectItem) 
     { 

     } 

     // This method is called after the project is created. 
     public void RunFinished() 
     { 

     } 

     public void RunStarted(object automationObject, 
      Dictionary<string, string> replacementsDictionary, 
      WizardRunKind runKind, object[] customParams) 
     { 


      try 
      { 
       // Display a form to the user. The form collects 
       // input for the custom message. 
       inputForm = new UserInputForm(); 
       inputForm.ShowDialog(); 

       customMessage = inputForm.get_CustomMessage(); 

       // Add custom parameters. 
       replacementsDictionary.Add("$custommessage$", 
        customMessage); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.ToString()); 
      } 
     } 

     // This method is only called for item templates, 
     // not for project templates. 
     public bool ShouldAddProjectItem(string filePath) 
     { 

      return true; 
     } 
    } 
} 

3) एक सार्वजनिक/निजी मजबूत कुंजी उत्पन्न और संपत्ति पेज

4) dll

5 रिलीज-उत्पन्न) में "पर हस्ताक्षर" टैब से विधानसभा पंजीकृत GACUtil के साथ पंजीकृत/मैं mydllname। dll, कोई त्रुटि

6) सिर्फ एक फ़ाइल के साथ एक सी ++ कंसोल प्रोजेक्ट टेम्पलेट निर्मित:

#include <iostream> 
using namespace std; 


int main(int argc, char** argv) 
{ 

    cout << "Hi hello world:" << "$custommessage$"; 

    return 0; 
} 

7) "में स्वचालित रूप से बनाम आयात" पर एक टेम्पलेट परियोजना (नहीं आइटम) चेकबॉक्स के साथ के रूप में निर्यात किया। जिप के अंदर संशोधित इस तरह .vstemplate फ़ाइल फ़ाइल:

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project"> 
    <TemplateData> 
    <Name>myproject_project</Name> 
    <Description>&lt;No description available&gt;</Description> 
    <ProjectType>VC</ProjectType> 
    <ProjectSubType> 
    </ProjectSubType> 
    <SortOrder>1000</SortOrder> 
    <CreateNewFolder>true</CreateNewFolder> 
    <DefaultName>myproject_project</DefaultName> 
    <ProvideDefaultName>true</ProvideDefaultName> 
    <LocationField>Enabled</LocationField> 
    <EnableLocationBrowseButton>true</EnableLocationBrowseButton> 
    <Icon>__TemplateIcon.ico</Icon> 
    </TemplateData> 
    <TemplateContent> 
    <Project TargetFileName="myproject_project.vcxproj" File="myproject_project.vcxproj" ReplaceParameters="true"> 
     <ProjectItem ReplaceParameters="false" TargetFileName="$projectname$.vcxproj.filters">myproject_project.vcxproj.filters</ProjectItem> 
     <ProjectItem ReplaceParameters="true" TargetFileName="myproject_project.cpp">myproject_project.cpp</ProjectItem> 
     <ProjectItem ReplaceParameters="false" TargetFileName="ReadMe.txt">ReadMe.txt</ProjectItem> 
    </Project> 
    </TemplateContent> 
    <WizardExtension> 
    <Assembly>myprojectvstemplate, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=a0a3d031ed112d61</Assembly> 
    <FullClassName>myprojectvstemplate.IWizardImplementation</FullClassName> 
    </WizardExtension> 
</VSTemplate> 

दुर्भाग्य से जब मैं एक नया खाका परियोजना यूआई सब पर प्रदर्शित नहीं किया जाता बनाने का प्रयास करें। परियोजना अभी खोला गया है और $ custommessage $ पैरामीटर का कोई प्रतिस्थापन नहीं है।

मैं अपने जादूगर की जीयूआई क्यों नहीं दिखा सकता?

इसके अतिरिक्त: डीबग करने का कोई तरीका है कि असेंबली क्यों लोड नहीं हो रही है ??

उत्तर

1

मैं ओ पी के रूप में ही समस्या थी, एक ही ट्यूटोरियल निम्नलिखित।

खाका खंड में संशोधन में,

चरण एक फ़ोल्डर में 2 निकालने ज़िप फ़ाइल और ज़िप फ़ाइल हटाएँ:

समाधान मैंने पाया यह गया था। फिर vstemplate को संशोधित करें।

अंत में वीएस के एक नए उदाहरण में विज़ार्ड आज़माएं।

मुझे नहीं पता कि यह उचित समाधान है, लेकिन यह मेरे लिए काम करता है।

+0

मुझे बहुत सी चालियां और मशीनरी बनाना पड़ा लेकिन मुझे अंत में यह काम करने के लिए मिला। धन्यवाद परेश, यद्यपि आपने मुझे एक संकेत दिया है, मुझे अंत में यह काम मिल गया। –

+0

मदद करने के लिए खुश :) – Paresh138

1

शायद विज़ार्ड कार्यान्वयन के साथ असेंबली नहीं मिली है।

विज़ार्ड एक्सटेंशन अनुभाग में आपको अपनी असेंबली और कक्षा का नाम सटीक लिखना चाहिए।

बेशक, यह असेंबली विस्तार निर्देशिका में होना चाहिए या जीएसी में पंजीकृत होना चाहिए।

<WizardExtension> 
    <Assembly>myprojectvstemplate, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=a0a3d031ed112d61</Assembly> 
    <FullClassName>myprojectvstemplate.IWizardImplementation</FullClassName> 
</WizardExtension> 

धन्यवाद, सर्ज

+0

मैंने इसे ऊपर वर्णित gacutil.exe के साथ पंजीकृत किया है और "असेंबली सफलतापूर्वक पंजीकृत" कोई त्रुटि नहीं मिली है। विज़ार्डक्स्टेंशन के बारे में मैं संस्कृति के बारे में 100% निश्चित नहीं हूं (असेंबली "कोई नहीं" कहती है) लेकिन मुझे लगता है कि तटस्थ एक ही बात है। टोकन अद्यतित है, असेंबली नाम मुख्य नामस्थान नाम के समान है, fullclassname असेंबली नाम है। IWizardImplementation (मेरे यूआई वर्ग) –

+0

आप, कुछ अपवादों को छोड़कर पकड़ कर सकते हैं यदि कोई हो: VS2012 का पहला उदाहरण में 1) खुला नई परियोजना संवाद, 2) VS2012 3 के दूसरे उदाहरण) खोलने VS2012 के दूसरे उदाहरण से डिबगर देते हैं पहले उदाहरण के लिए, 4) वीएस2012, 5 के दूसरे उदाहरण में अपवाद सक्षम करें 5) VS2012 के पहले उदाहरण में नई प्रोजेक्ट बनाने का प्रयास करें यदि कुछ अपवाद हैं, तो आप उन्हें VS2012 – TSV

+0

के दूसरे उदाहरण में देखेंगे यह लेकिन इस अपवाद के अलावा कुछ भी नहीं मिला: "मूल्य अपेक्षित सीमा के भीतर नहीं आता है"। दुर्भाग्यवश मुझे समझ में नहीं आता कि यह किस सीमा/मूल्य का जिक्र कर रहा है। यदि आप टेम्पलेट प्रोजेक्ट के साथ vs2012 के लिए एक साधारण विज़ार्ड बना सकते हैं और इसे मेरे लिए ज़िप कर सकते हैं तो मैं आभारी रहूंगा ताकि मैं जांच सकूं कि मैं कहां गलत हो रहा हूं। उपर्युक्त चरणों के बाद यह 5-मिनट का कार्य होना चाहिए और यह सुनिश्चित करना कि मुझे कुछ गलत नहीं मिला –

संबंधित मुद्दे