我正在创建一个项目,我将导出为项目模板,使用this和this作为指导。
这些是使用Visual Studio 2010创建的Sharepoint 2010项目。
我真正希望发生的是,当用户启动新项目并选择我将创建的模板时,系统会提示用户输入多个值(超出解决方案名称)。我想让他们从一开始就更改WebPart和用户控件的默认名称。
但是,关于这是否真的可行,我得到了混合的信号。 here下面的代码似乎表明用户/开发人员需要将CustomParameters添加到.vstemplate文件中,然后这些值将被读取以替换这些占位符值。这是&#34;官方&#34; (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;?的项目中添加了可替换参数p>
对于那些不希望将项目导出为模板的好奇者来看看这样的* .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>