Visual Studio 2012项目模板自定义参数&重命名问题

时间:2014-01-27 11:33:20

标签: c# visual-studio-2012 visual-studio-templates

任务:
我想从Visual Studio 2012项目创建项目模板,因此我可以快速创建类似的项目。这需要重命名文件并更改根命名空间。不幸的是,这不会发生......

做了什么:

  1. 我已创建项目并替换了MSDN页面指定的某些名称。一个替换是$safeprojectname$,另一个是自定义参数:$custom1$
  2. 项目已通过文件 - >导出为项目模板。导出模板... 选项。
  3. 我已解压缩创建的zip文件。
  4. 我已编辑了 .vstemplate .csproject 文件。代码见下文。
  5. 我已将文件重新压缩。
  6. Visual Studio已重新启动,项目已打开。
  7. 我去添加 - >新项目 - > *我的自定义模板* ,给它起一个名字并添加项目。
  8. 项目已添加,$safeprojectname$被替换。文件重命名,$custom1 被替换。
  9. MyTemplate.vstemplate

    <VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
       <TemplateData>
          <Name>MyTemplateName</Name>
          <Description>My Description</Description>
          <ProjectType>CSharp</ProjectType>
          <ProjectSubType></ProjectSubType>
          <SortOrder>1000</SortOrder>
          <CreateNewFolder>true</CreateNewFolder>
          <DefaultName>My Default Name</DefaultName>
          <ProvideDefaultName>true</ProvideDefaultName>
          <LocationField>Enabled</LocationField>
          <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
          <Icon>__TemplateIcon.ico</Icon>
       </TemplateData>
       <TemplateContent>
          <Project TargetFileName="MyTemplate.csproj" File="MyTemplate.csproj" ReplaceParameters="true">
             <ProjectItem ReplaceParameters="true" TargetFileName="app.config">app.config</ProjectItem>
             <ProjectItem ReplaceParameters="true" TargetFileName="$safeprojectname$Data.cs">Data.cs</ProjectItem>
             <ProjectItem ReplaceParameters="true" TargetFileName="$safeprojectname$.cs">Main.cs</ProjectItem>
             <ProjectItem ReplaceParameters="true" TargetFileName="$safeprojectname$Form.xaml">Form.xaml</ProjectItem>
             <ProjectItem ReplaceParameters="true" TargetFileName="$safeprojectname$Form.xaml.cs">Form.xaml.cs</ProjectItem>
             <Folder Name="Properties" TargetFolderName="Properties">
                <ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem>
                <ProjectItem ReplaceParameters="true" TargetFileName="Settings.settings">Settings.settings</ProjectItem>
                <ProjectItem ReplaceParameters="true" TargetFileName="Settings.Designer.cs">Settings.Designer.cs</ProjectItem>
             </Folder>
          </Project>
          <CustomParameters>
             <CustomParameter Name="$custom1$" Value="Some.Custom.Namespace.Prefix."/>
          <CustomParameters>
       </TemplateContent>
    </VSTemplate>
    

    MyTemplate.csproj

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
        <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
        <PropertyGroup>
            ...
        <OutputType>Library</OutputType>
        <RootNamespace>$custom1$$safeprojectname$</RootNamespace>
        <AssemblyName>$safeprojectname$</AssemblyName>
        </PropertyGroup>
        <ItemGroup>
            <Compile Include="$safeprojectname$.cs" />
            <Compile Include="$safeprojectname$Data.cs" />
            <Compile Include="$safeprojectname$Form.xaml.cs">
                <DependentUpon>$safeprojectname$Form.xaml</DependentUpon>
            </Compile>
            <Compile Include="Properties\AssemblyInfo.cs" />
            <Compile Include="Properties\Settings.Designer.cs">
                <AutoGen>True</AutoGen>
                <DesignTimeSharedInput>True</DesignTimeSharedInput>
                <DependentUpon>Settings.settings</DependentUpon>
            </Compile>
        </ItemGroup>
        <ItemGroup>
            <Page Include="$safeprojectname$Form.xaml">
                <SubType>Designer</SubType>
                <Generator>MSBuild:Compile</Generator>
            </Page>
        </ItemGroup>
        <ItemGroup>
            <None Include="app.config" />
            <None Include="Properties\Settings.settings">
                <Generator>PublicSettingsSingleFileGenerator</Generator>
                <LastGenOutput>Settings.Designer.cs</LastGenOutput>
            </None>
        </ItemGroup>
    </Project>
    

    的问题?
    如何让Visual Studio更改文件中的$ custom1 $参数并将文件(如Main.cs)重命名为$ safeprojectname $ .cs?

    什么不起作用

    • 按照MSDN页面上的步骤让我无处可去;文件名既不会改变,也不会改变自定义参数。
    • 搜索Google给了我MSDN页面或对它们的引用。

2 个答案:

答案 0 :(得分:0)

我不知道视觉stuido handels如何导出模板,但我知道修改默认模板,visual studio有两个版本的模板。您可以在“ProjectTemplate”文件夹中找到另一个,“ProjectTemplateCache”。

如果没有您的修改,您的导出模板仍然在cach中。 尝试使用参数:“devenv / installvstemplates”或“devenv / setup”从cmd statring visual studio刷新缓存。

如果您想创建多个模板,我建议您下载Visual Studio并使用VSIX项目解模板。 SDK还允许以更有效的方式调试模板。您可以按Debug,然后通过安装VSIX(模板)来重新获取Visual Studio实例。

答案 1 :(得分:0)

您的步骤和项目文件看起来正确无误。您需要更新Visual Studio模板缓存。 How to update Visual Studio Template Cache中的答案与步骤相关联。

以下是适用于我的步骤(请注意您的用户名将有所不同):

  1. 关闭所有打开的Visual Studio实例。
  2. 修改位于C:\Users\chadd\Documents\Visual Studio 2013\My Exported Templates的模板副本 - 按照上面OP中的步骤进行操作。
  3. 搜索以查找模板的其他副本并将其删除。我有Visual Studio 2013,并在这两个目录中找到了副本。 C:\Users\chadd\AppData\Roaming\Microsoft\VisualStudio\12.0\ProjectTemplatesCache C:\Users\chadd\Documents\Visual Studio 2013\Templates\ProjectTemplates
  4. 将已编辑的yourTemplate.zip版本复制到C:\Users\chadd\Documents\Visual Studio 2013\Templates\ProjectTemplates
  5. 打开Visual Studio的命令提示符(以管理员身份运行)并输入devenv /installvstemplates此步骤需要一段时间(几分钟),因此请耐心等待命令提示符返回。
  6. 打开Visual Studio,验证修改后的模板现在是否正常工作。