让变量在visual studio模板中工作



我试图使概念类型的视觉工作室模板的简单证明,但我似乎不能得到内建的变量像他们应该工作。我试图遵循这里的文档https://learn.microsoft.com/en-us/visualstudio/ide/template-parameters?view=vs-2019但它不工作。

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
<TemplateData>
<Name>Readers</Name>
<Description>&lt;No description available&gt;</Description>
<ProjectType>CSharp</ProjectType>
<ProjectSubType>
</ProjectSubType>
<SortOrder>1000</SortOrder>
<CreateNewFolder>true</CreateNewFolder>
<DefaultName>Readers</DefaultName>
<ProvideDefaultName>true</ProvideDefaultName>
<LocationField>Enabled</LocationField>
<EnableLocationBrowseButton>true</EnableLocationBrowseButton>
<Icon>__TemplateIcon.ico</Icon>
</TemplateData>
<TemplateContent>
<Project TargetFileName="Readers.csproj" File="Readers.csproj" ReplaceParameters="true">
<ProjectItem ReplaceParameters="true" TargetFileName="App.config">App.config</ProjectItem>
<ProjectItem ReplaceParameters="true" TargetFileName="DBAccess.cs">DBAccess.cs</ProjectItem>
<ProjectItem ReplaceParameters="true" TargetFileName="$safeprojectname$.cs">MainReader.cs</ProjectItem>
<ProjectItem ReplaceParameters="true" TargetFileName="packages.config">packages.config</ProjectItem>
<Folder Name="Properties" TargetFolderName="Properties">
<ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem>
<ProjectItem ReplaceParameters="true" TargetFileName="Resources.resx">Resources.resx</ProjectItem>
<ProjectItem ReplaceParameters="true" TargetFileName="Resources.Designer.cs">Resources.Designer.cs</ProjectItem>
<ProjectItem ReplaceParameters="true" TargetFileName="Settings.settings">Settings.settings</ProjectItem>
<ProjectItem ReplaceParameters="true" TargetFileName="Settings.Designer.cs">Settings.Designer.cs</ProjectItem>
</Folder>
<ProjectItem ReplaceParameters="true" TargetFileName="ReaderBase.cs">ReaderBase.cs</ProjectItem>
</Project>
</TemplateContent>
</VSTemplate>

这是我在那个例子之后想到的。这基本上与我执行Project ->在visual studio中导出模板,除了。

<ProjectItem ReplaceParameters="true" TargetFileName="$safeprojectname$.cs">MainReader.cs</ProjectItem>

,当我使用此模板创建新文件时,应该将MainReader.cs文件重命名为项目名称。它没有,每当我用这个模板创建一个新项目时,该文件都会保持MainReader.cs的名称。我试过添加ext_扩展到名称,我试过使用括号内的变量,而不是外部和两者。我肯定还漏掉了什么,或者这已经不重要了。我一直在使用导出模板向导来获取模板,提取压缩文件,更改。vstemplate文件,将整个内容放回压缩文件中,然后最后替换visual studio导出模板文件夹中的zip文件。我可能需要把修改后的zip文件放在另一个地方,但我不确定。

所以我终于设法让这个工作,它最终成为多个问题。

首先,我实际上是保存我的新模板到错误的地方。导出模板文件夹并不是visual studio寻找用户创建模板的地方,这很令人困惑,因为它会自动将你导出的任何模板添加到它的列表中,所以当你创建一个新项目时,你可能会看到这个文件夹中显示的模板,并认为它是从这里提取模板列表的。用户创建的模板的实际位置在这里注明。在用户模板部分中的https://learn.microsoft.com/en-us/visualstudio/ide/how-to-locate-and-organize-project-and-item-templates?view=vs-2019。您也可以在tools ->选项→项目和解决方案->的位置。正确的步骤是导出模板,将zip文件解压缩到您可以处理的地方,对vstemplate文件和proj文件进行更改(我将稍后讨论这个问题),将所有这些压缩到一个zip文件中,然后将该文件放在用户模板目录中。

我注意到的另一件事,特别是在将文件名设置为变量时,您还必须编辑.csproj文件(或我假设的任何其他项目文件)并更改其中的文件名以匹配.vstemplate文件。在我的例子中,为了使它工作

<ProjectItem ReplaceParameters="true" TargetFileName="$safeprojectname$.cs">MainReader.cs</ProjectItem>

我的csproj文件必须包含这个

<Compile Include="$safeprojectname$.cs" />

取代列出MainReader.cs的旧行。这两个问题都解决了,我就能看到文件名像我预期的那样改变了。

相关内容

  • 没有找到相关文章

最新更新