Для нашего решения Visual Studio я хочу создать один проект, который просто генерирует некоторые файлы с помощью пользовательских сценариев. У меня есть несколько работающее решение, далее приведенное в качестве примера:
Это мой minimal.vcxproj
:
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Universal|Win32">
<Configuration>Universal</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<None Include="common.fooconf" />
</ItemGroup>
<ItemGroup>
<Foo Include="file1.foo" />
<Foo Include="file2.foo" />
</ItemGroup>
<Target Name="Build" Inputs="common.fooconf;@(Foo)" Outputs="Output\%(Foo.Filename).bar">
<MakeDir Directories="Output" />
<Exec Command='TYPE "common.fooconf" "%(Foo.FullPath)" > "Output\%(Foo.Filename).bar"' />
</Target>
<Target Name="Clean">
<RemoveDir Directories="Output" />
</Target>
<Target Name="Rebuild" DependsOnTargets="Clean;Build" />
</Project>
И мне нужно это minimal.vcxproj.filters
, чтобы в проводнике решения VS появились три содержащихся файла:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<None Include="common.fooconf"/>
</ItemGroup>
<ItemGroup>
<Foo Include="file1.foo"/>
<Foo Include="file2.foo"/>
</ItemGroup>
</Project>
Теперь есть еще две проблемы:
При загрузке проекта я получаю error : Designtime build failed for project '[...]\minimal.vcxproj' configuration 'Universal|Win32'. IntelliSense might be unavailable. Check *.designtime.log files in your %TEMP% directory.
Если я посмотрю в журнале, ошибка будет error MSB4057: The target "GetClCommandLines" does not exist in the project.
Конечно, IntelliSense здесь не имеет смысла (TYPE - просто заполнитель для пользовательского скрипта) , но должен быть способ избавиться от этого предупреждения.
Сборка (например, через F7 ) работает как талисман (даже инкрементный), но для нас было бы очень важно запустить обработку отдельных файлов (например, Ctrl F7 ). Но я не могу понять, как заставить это работать.