7

Tôi gặp sự cố khi hiển thị gui trình hướng dẫn mẫu của studio trực quan của tôi. Tôi làm theo các bước sau: http://msdn.microsoft.com/en-us/library/ms185301.aspxTrình hướng dẫn mẫu VS2012 - GUI không hiển thị

Dưới đây là những gì tôi đã làm:

1) Tạo một thư viện C# lớp (.dll) với các tập tin sau đây:

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) Đã thêm biểu mẫu nhập của người dùng bằng hộp chỉnh sửa và hộp tổ hợp có mã UserInputForm.cs

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) tạo ra public/private key mạnh và đăng ký lắp ráp từ "ký" tab trong trang thuộc tính

4) Phát hành tạo dll

5) đăng ký bán nó với gacutil/i mydllname. dll, không có lỗi

6) tạo một ++ mẫu giao diện điều khiển dự án C chỉ với một file:

#include <iostream> 
using namespace std; 


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

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

    return 0; 
} 

7) xuất khẩu làm mẫu dự án (không phải mục) với hộp kiểm trên "nhập khẩu tự động vào vs". Đã sửa đổi bên trong tệp zip tệp .vstemplate như sau:

<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> 

Thật không may khi tôi cố tạo một dự án mẫu mới giao diện người dùng không hiển thị chút nào. Dự án vừa được mở và không có sự thay thế của tham số $ custommessage $.

Tại sao tôi không thể hiển thị GUI của trình hướng dẫn?

Ngoài ra: có cách nào để gỡ lỗi tại sao lắp ráp không được tải không ??

Trả lời

1

tôi đã cùng một vấn đề như OP, sau cùng hướng dẫn.

Giải pháp tôi thấy được điều này:

Trong Sửa đổi Phần Template,

Bước 2 giải nén file zip vào một thư mục và xóa các tập tin zip. Sau đó sửa đổi vstemplate.

Cuối cùng, hãy thử trình hướng dẫn trong phiên bản mới của VS.

Tôi không biết đây có phải là giải pháp phù hợp hay không, nhưng đây là những gì phù hợp với tôi.

+0

Tôi đã phải làm rất nhiều trickeries và máy móc nhưng cuối cùng tôi đã nhận nó để làm việc. Cảm ơn Paresh, mặc dù bạn chỉ cho tôi một gợi ý, cuối cùng tôi đã làm việc đó. –

+0

Rất vui được trợ giúp :) – Paresh138

1

Có lẽ không thể tìm thấy bản lắp ráp có triển khai thuật sĩ.

Trong phần WizardExtension, bạn nên viết chính xác tên lắp ráp và tên lớp của mình.

Tất nhiên, hội đồng này phải nằm trong thư mục mở rộng hoặc được đăng ký trong GAC.

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

Cảm ơn, Serge

+0

Tôi đã đăng ký nó với gacutil.exe như được mô tả ở trên và không có lỗi "lắp ráp thành công đã đăng ký". Về thuật ngữ, tôi không chắc chắn 100% về Văn hóa (hội đồng nói "không") nhưng tôi nghĩ Trung lập cũng giống nhau. Mã thông báo được cập nhật, tên assembly cũng giống như tên không gian tên chính, fullclassname là tên assembly. IWizardImplementation (lớp UI của tôi) –

+0

Bạn có thể bắt một số ngoại lệ, nếu có: 1) mở hộp thoại dự án mới trong trường hợp đầu tiên của VS2012, 2) mở phiên bản thứ hai của VS2012 3) đính kèm trình gỡ lỗi từ phiên bản thứ hai của VS2012 ví dụ đầu tiên, 4) cho phép ngoại lệ trong trường hợp thứ hai của VS2012, 5) cố gắng tạo dự án mới trong trường hợp đầu tiên của VS2012 Nếu có một số ngoại lệ, bạn sẽ thấy chúng trong trường hợp thứ hai của VS2012 – TSV

+0

Đã thử nhưng không có gì ngoài ngoại lệ này: "Giá trị không nằm trong phạm vi dự kiến". Rất tiếc, tôi không hiểu phạm vi/giá trị mà nó đang đề cập đến. Nếu bạn có thể tạo một thuật sĩ đơn giản cho vs2012 với một dự án mẫu và nén nó cho tôi, tôi sẽ biết ơn vì vậy tôi có thể kiểm tra nơi tôi nhận được sai. Điều này sẽ là một nhiệm vụ 5 phút theo các bước trên và đảm bảo rằng tôi đã không nhận được một cái gì đó sai –