У меня есть файл основного проекта. net (* .csproj), подобный следующему:
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
<!-- Create RS.cs -->
<ItemGroup>
<ResourceGeneratorInputs Include="strings.resx" />
<ResourceGeneratorOutputs Include="RS.cs" />
</ItemGroup>
<Target Name="GenerateTheResourceFile"
BeforeTargets="PrepareForBuild"
Inputs="@(ResourceGeneratorInputs)"
Outputs="@(ResourceGeneratorOutputs)">
<Exec Command="ResourceStringGenerator.exe strings.resx RS.cs " />
</Target>
</Project>
У этих проектов есть цель, которая генерирует файл кода csharp с именем RS.cs, который также должен быть скомпилировано.
Проблема в том, что файл создан слишком поздно. Механизм сборки уже прочитал список файлов в каталоге проекта, а файл RS.cs игнорируется.
Я попытался изменить атрибут BeforeTargets для других целей, но безуспешно. (Описано здесь: https://docs.microsoft.com/en-us/dotnet/core/tools/csproj#build -events ) Я также пытался отключить автоматическое c включение файлов:
<PropertyGroup>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
</PropertyGroup>
и создание собственного списка файлов для компиляции. Но это тоже не сработало. Файл RS.cs был сгенерирован слишком поздно.
Новый формат файла проекта, похоже, так жаждет получить список файлов, что, похоже, не остается места для автоматически сгенерированных файлов.
Какой обходной путь здесь?