5

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

做了什么:

  1. 我已经创建了项目并替换了 MSDN 页面指定的某些名称。一个替换是$safeprojectname$,另一个是自定义参数:$custom1$.
  2. 该项目已通过File --> Export Template...选项导出为项目模板。
  3. 我已经解压缩了创建的 zip 文件。
  4. 我已经编辑了.vstemplate.csproject文件。代码在下面找到。
  5. 我已经重新压缩了文件。
  6. Visual Studio 已重新启动,并且已打开一个项目。
  7. 我去Add --> New Project --> *my custom template*,给它一个名字并添加项目。
  8. 该项目被添加$safeprojectname$并被替换。这些文件不会被重命名,$custom1不会被替换。

我的模板.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>

我的模板.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 页面,或对它们的引用。
4

2 回答 2

0

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

也许您导出的模板仍然在缓存中,没有您的修改。尝试通过使用参数从 cmd 启动 Visual Studio 来刷新缓存:“devenv /installvstemplates”或“devenv /setup”。

如果要创建多个模板,我建议下载 Visual Studio 并使用 VSIX 项目来解聚模板。SDK 还允许以更有效的方式调试模板。您可以按调试,您将收到一个安装了 VSIX(您的模板)的 Visual Studio 实例。

于 2014-01-27T12:06:01.877 回答
0

您的步骤和项目文件看起来正确。您需要更新 Visual Studio 模板缓存。如何更新 Visual Studio 模板缓存中的答案链接到这些步骤。

以下是对我有用的步骤(注意您的用户名会有所不同):

  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 验证您修改后的模板现在是否正常工作。
于 2016-01-19T22:47:33.823 回答