У меня ниже настройки файла MSBuild Target. Это прекрасно работает с одним файлом JSON.
<Target Name="dev"
AfterTargets="PrepareForBuild"
BeforeTargets="BeforeBuild"
Condition="$(Configuration) != 'Debug'">
<Message Text="Building Application (dev.json)" />
<ItemGroup>
<ScriptFile Include="$(MSBuildThisFileDirectory)myscript.ps1" />
</ItemGroup>
<ItemGroup>
<ScriptArgs Include="-Source "$(MSBuildProjectDirectory)"" />
<ScriptArgs Include="-PathToManifest "$(MSBuildProjectDirectory)\test\dev.json"" />
</ItemGroup>
<Exec Command="powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File "@(ScriptFile)" @(ScriptArgs,' ')"
Condition="Exists('@(ScriptFile)')" />
<Error Condition="!Exists('@(ScriptFile)')"
Text="Script file: "@(ScriptFile)" not found. Existing dev.json incomplete!" />
</Target>
Я проверил несколько вопросов здесь, но мне не помогло размещение здесь. Как добавить это в цикл, чтобы я мог запустить один и тот же сценарий с разными файлами JSON?
У меня настроено test\dev.json
, и у меня test.json
, prod.json
.
Все остается прежним, но входной файл должен быть циклическим.
Я попробовал предложение как ниже, но все еще не работало.
<ItemGroup>
<MyJsonFile Include="dev.json" />
<MyJsonFile Include="test.json" />
<MyJsonFile Include="prod.json" />
</ItemGroup>
<ItemGroup>
<ScriptFile Include="$(MSBuildThisFileDirectory)myscript.ps1" />
</ItemGroup>
<ItemGroup>
<ScriptArgs Include="-Source "$(MSBuildProjectDirectory)"" />
<ScriptArgs Include="-PathToManifest "$(MSBuildProjectDirectory)\test\%(MyJsonFile.Identity)"" />
</ItemGroup>
<Target Name="dev"
AfterTargets="PrepareForBuild"
BeforeTargets="BeforeBuild"
Condition="$(Configuration) != 'Debug'">
<Exec Command="powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File "@(ScriptFile)" @(ScriptArgs,' ')"
Condition="Exists('@(ScriptFile)')" />
<Error Condition="!Exists('@(ScriptFile)')"
Text="Script file: "@(ScriptFile)" not found. Existing dev.json incomplete!" />
</Target>
Я получаю
Невозможно проверить аргумент для параметра 1> 'PathToManifest'.
Я попытался переместить ItemGroup моей ScriptArgs в Target, но это выдает другую ошибку
Невозможно связать параметр, поскольку параметр 1> 'PathToManifest'
указано более одного раза. Чтобы обеспечить несколько значений параметров
которые могут принимать несколько значений 1>, используйте синтаксис массива.