Шаблон VS не копирует файлы, которые не отображаются в Solution Explorer

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 значение. Поэтому в обозревателе решений отображается batch-build\2_debug-build-all-versions-with-Gallio-tests.bat файл. Это то, что мне нужно. Но если я открою каталог моего нового проекта, то я увижу - batch-build\3_debug-build-all-versions-with-NUnit-tests.bat файл не был скопирован. Таким образом, шаблон не копирует файлы, что не отображается в обозревателе решений. Но мне нужны их копии полностью.

Как заставить шаблон скопировать все файлы?

1 ответ

Я была такая же проблема. Вот мое решение:
Добавьте нужный файл в решение. На вкладке свойств отметьте его как ресурс. Теперь создайте свой шаблон.
Изменение файла на ресурс приведет к тому, что шаблон скопирует этот файл (при условии, что вы не включили его в решение, потому что он не должен соблюдаться)

Надеюсь, это поможет, это решение, которое я использовал для включения файла AssemblyInfo_Template.cs в проект шаблона. (AssemblyInfo_Template.cs используется SubWCRev.exe для перезаписи AssemblyInfo.cs для включения номера редакции в AssemblyInfo.cs)

Другие вопросы по тегам