如何在用户开发人员从自定义模板创建项目时提示他们获取项目特定的值?

时间:2015-05-11 19:01:38

标签: visual-studio-2010 sharepoint-2010 visual-studio-templates

我正在创建一个项目,我将导出为项目模板,使用thisthis作为指导。

这些是使用Visual Studio 2010创建的Sharepoint 2010项目。

我真正希望发生的是,当用户启动新项目并选择我将创建的模板时,系统会提示用户输入多个值(超出解决方案名称)。我想让他们从一开始就更改WebPart和用户控件的默认名称。

但是,关于这是否真的可行,我得到了混合的信号。 here下面的代码似乎表明用户/开发人员需要将CustomParameters添加到.vstemplate文件中,然后这些值将被读取以替换这些占位符值。这是"官方" (MS示例)代码:

<TemplateContent>
    ...
    <CustomParameters>
        <CustomParameter Name="$MyParameter1$" Value="MyValue1"/>
        <CustomParameter Name="$MyParameter2$" Value="MyValue2"/>
    </CustomParameters>
</TemplateContent>

但如果真的必须做到这一点,那么我认为没有任何好处而只是简单地提出&#34; TODO&#34;在代码中,让用户/开发人员进行全局搜索&amp;打开项目后更换。

所以我想要一个&#34;健全检查&#34;来自知情人士,这就是我需要做的事情:

这就是我要做的事情:

0) Create the project
1) Export it as a project template
2) Alter the .vstemplate file, adding something like the code above

这当然似乎是&#34;如何&#34;正在推荐。我的主要问题是,将提示模板的用户开发人员替换值(覆盖&#34; MyValue1&#34;和#34; MyValue2&#34;),或者用户开发人员是否必须修改*。 vstemplate文件直接添加替换vaues?如果是后者,我没有看到好处 - 在之前定位和更改* .vstemplate文件以创建基于模板的新项目似乎远比添加&#34; TODO&#更加笨拙34;代码中的消息替换了这个和那个值。

IOW,用户/开发人员是否必须打开* .vstemplate文件,用他想要的内容替换&#34; Name&#34; s和&#34; Value&#34; s,例如更改内容像这样:

<CustomParameters>
    <CustomParameter Name="$title$" Value="Replace this placeholder title"/>
    <CustomParameter Name="$description$" Value="Replace this placeholder description"/>
</CustomParameters>

......这样的事情:

<CustomParameters>
    <CustomParameter Name="$title$" Value="A Connecticut Yankee in King Arthur's Court"/>
    <CustomParameter Name="$description$" Value="Hammerin' Hank Morgan Le Fay Vincent Van Gogh Fly a Kite Runner"/>
</CustomParameters>

(假设原始开发者(我)保存的模板在名为&#34; $ title $&#34;&#34; $ description $&#34;?

对于那些不希望将项目导出为模板的好奇者来看看这样的* .vstemplate文件可能包含的内容,这里有一个非常通用的文章:

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
  <TemplateData>
    <Name>SPWFTemplate</Name>
    <Description>This is for starting projects to create WebForms based on existing PDFs</Description>
    <ProjectType>CSharp</ProjectType>
    <ProjectSubType>
    </ProjectSubType>
    <SortOrder>1000</SortOrder>
    <CreateNewFolder>true</CreateNewFolder>
    <DefaultName>SPWFTemplate</DefaultName>
    <ProvideDefaultName>true</ProvideDefaultName>
    <LocationField>Enabled</LocationField>
    <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
    <Icon>__TemplateIcon.ico</Icon>
  </TemplateData>
  <TemplateContent>
    <Project TargetFileName="SPWFTemplate.csproj" File="SPWFTemplate.csproj" ReplaceParameters="true">
      <Folder Name="Features" TargetFolderName="Features">
        <Folder Name="Feature1" TargetFolderName="Feature1">
          <ProjectItem ReplaceParameters="false" TargetFileName="Feature1.feature">Feature1.feature</ProjectItem>
          <ProjectItem ReplaceParameters="true" TargetFileName="Feature1.Template.xml">Feature1.Template.xml</ProjectItem>
        </Folder>
      </Folder>
      <Folder Name="Package" TargetFolderName="Package">
        <ProjectItem ReplaceParameters="false" TargetFileName="Package.package">Package.package</ProjectItem>
        <ProjectItem ReplaceParameters="true" TargetFileName="Package.Template.xml">Package.Template.xml</ProjectItem>
      </Folder>
      <Folder Name="Properties" TargetFolderName="Properties">
        <ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem>
        <ProjectItem ReplaceParameters="false" TargetFileName="key.snk">key.snk</ProjectItem>
      </Folder>
      <Folder Name="SPWFTemplateVisualWebPart" TargetFolderName="SPWFTemplateVisualWebPart">
        <ProjectItem ReplaceParameters="true" TargetFileName="Elements.xml">Elements.xml</ProjectItem>
        <ProjectItem ReplaceParameters="false" TargetFileName="SharePointProjectItem.spdata">SharePointProjectItem.spdata</ProjectItem>
        <ProjectItem ReplaceParameters="true" TargetFileName="SPWFTemplateVisualWebPart.cs">SPWFTemplateVisualWebPart.cs</ProjectItem>
        <ProjectItem ReplaceParameters="false" TargetFileName="SPWFTemplateVisualWebPart.webpart">SPWFTemplateVisualWebPart.webpart</ProjectItem>
        <ProjectItem ReplaceParameters="true" TargetFileName="SPWFTemplateVisualWebPartUserControl.ascx">SPWFTemplateVisualWebPartUserControl.ascx</ProjectItem>
        <ProjectItem ReplaceParameters="true" TargetFileName="SPWFTemplateVisualWebPartUserControl.ascx.cs">SPWFTemplateVisualWebPartUserControl.ascx.cs</ProjectItem>
        <ProjectItem ReplaceParameters="true" TargetFileName="SPWFTemplateVisualWebPartUserControl.ascx.designer.cs">SPWFTemplateVisualWebPartUserControl.ascx.designer.cs</ProjectItem>
      </Folder>
    </Project>
  </TemplateContent>
</VSTemplate>

0 个答案:

没有答案