Обновление ресурса перед многоцелевой сборкой Visual Studio .csproj - PullRequest
0 голосов
/ 24 января 2019

У меня есть .csproj файл с несколькими целями.Он начинается так:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>net35;net40;net45;netcoreapp2.0;netstandard2.0</TargetFrameworks>
      ...

Это проект на C #, использующий Selenium, и ему необходимо автоматически обновлять файл javascript с помощью NPM.Каждый такой файл javascript должен быть помечен как Embedded Resource.

. Я пробовал несколько способов запустить NPM перед сборкой.Я попытался написать командный файл, который запускается перед сборкой, я попытался установить расширение Nuget для обновления NPM и даже попытался добавить событие предварительной сборки, которое обновляет файлы.

Проблема в том, что это происходит для каждой целихотя мне нужно, чтобы это произошло только один раз, до начала сборки.

Я искал все соответствующие документы MSBuild, которые Microsoft предоставляет для поиска решения, но тщетно.

В настоящее время я обновляю сценарии какэто:

<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
  <Exec Command="cd $(ProjectDir)Properties\NodeResources&#xD;&#xA;call npm update &amp;&amp; copy node_modules\mycompany\firstpackage\dist ..\Resources &amp;&amp; copy node_modules\mycompany\secondpackage\dist ..\Resources" />
</Target>

<ItemGroup>
  <None Remove="Properties\Resources\script1.js" />
  <None Remove="Properties\Resources\script2.js" />
</ItemGroup>

<ItemGroup>
  <EmbeddedResource Include="Properties\Resources\script1.js" />
  <EmbeddedResource Include="Properties\Resources\script2.js" />
</ItemGroup>

У кого-нибудь есть идеи, как это сделать?

1 Ответ

0 голосов
/ 24 января 2019

Вы должны понимать, как работает здание для мульти-фреймворков.Он не берет один проект и строит его для нескольких фреймворков, а запускает некоторые процессы в зависимости от количества фреймворков.

Таким образом, нет никакой возможности связаться между процессами.

Но я предлагаю вам создать отдельный файл csproj (на самом деле это файл project с конфигурацией msbuild), без реального проекта и внутри него, переопределите цель build с помощью команды npm и команду для построения решения.

Другой вариант - удерживатьmsbuild property или ** переменная окружения` или временный файл и т. Д., И обновите их статус после первого выполнения команды, и проверьте статус перед командой.Есть оставшийся без ответа вопрос по этому поводу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...