VS模板不会复制文件,这些文件不会在解决方案资源管理器中显示

时间:2015-03-20 09:39:56

标签: visual-studio templates visual-studio-templates

Visual Studio 2013.我创建了自己的模板。

vstemplate - 文件包含以下记录:

<Folder Name="batch-build" TargetFolderName="batch-build">
  <ProjectItem ReplaceParameters="true" TargetFileName="1_debug-build-all-versions.bat">
  <ProjectItem ReplaceParameters="true" TargetFileName="2_debug-build-all-versions-with-Gallio-tests.bat">
  <ProjectItem ReplaceParameters="true" TargetFileName="3_debug-build-all-versions-with-NUnit-tests.bat">
  <ProjectItem ReplaceParameters="true" TargetFileName="4_release-build-all-versions.bat">
</Folder>

我需要根据此模板将所有这些文件复制到我的新项目中。

但此模板的csproj - 文件包含一些条件

<ItemGroup>
  <None Include="batch-build\1_debug-build-all-versions.bat" />
  <None Include="batch-build\4_release-build-all-versions.bat" />
</ItemGroup>

<Choose>
  <When Condition="'$(Build_With_Tests_Of)' == 'NUnit'">
    <ItemGroup>
      <None Include="batch-build\3_debug-build-all-versions-with-NUnit-tests.bat" />
    </ItemGroup>
  </When>
  <When Condition="'$(Build_With_Tests_Of)' == 'Gallio'">
    <ItemGroup>
      <None Include="batch-build\2_debug-build-all-versions-with-Gallio-tests.bat" />
    </ItemGroup>
  </When>
</Choose>

创建新项目时,默认情况下Build_With_Tests_Of属性的值为Gallio。因此,在Solution Explorer中显示batch-build\2_debug-build-all-versions-with-Gallio-tests.bat文件。这就是我需要的。但是,如果我打开我的新项目的目录,比我看到的那样 - batch-build\3_debug-build-all-versions-with-NUnit-tests.bat文件没有被复制。因此,模板不会复制文件,这些文件不会显示在解决方案资源管理器中。但我需要他们的副本。

如何强制模板复制所有文件?

1 个答案:

答案 0 :(得分:3)

我有同样的问题。这是我的解决方案:
将所需文件添加到解决方案中。在它的属性选项卡中,将其标记为资源。现在,创建模板。
将文件更改为资源将使模板复制该文件(假设您之前没有将其包含在解决方案中,因为它不应该被编译)

希望这会有所帮助,这是我过去在模板项目中包含AssemblyInfo_Template.cs文件的解决方案。 (SubWCRev.exe使用AssemblyInfo_Template.cs来覆盖AssemblyInfo.cs,以便在AssemblyInfo.cs中包含修订号)