ASP. NET 4.6 SPA, Publi sh весь wwwroot контент динамически через MsBuild - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть приложение ASP. NET 4.6, на котором размещается React. Весь опубликованный контент переходит в wwwroot с шагом MsBuild, как показано ниже:

  <Target Name="BeforeBuild">
    <!-- Call npm build -->
    <Exec Condition="$(Configuration) == 'Release'" Command="npm install" WorkingDirectory="ClientApp">
    </Exec>
    <Exec Condition="$(Configuration) == 'Release'" Command="npm run build" WorkingDirectory="ClientApp">
    </Exec>
    <Exec Condition="$(Configuration) == 'Release'" Command="xcopy.exe  $(SourceDirectory) $(DestinationDirectory) /Y /E">
    </Exec>
  </Target>

Проблема, с которой я сталкиваюсь, заключается в том, что я публикую sh через Azure DevOps. Внутри проекта я включил это ItemGroup:

  </ItemGroup>
    <Content Include="Views\_ViewStart.cshtml" />
    <Content Include="Views\Home\Index.cshtml" />
    <Content Include="Views\Shared\Error.cshtml" />
    <Content Include="Views\Shared\_Layout.cshtml" />
    <Content Include="wwwroot\**\*" CopyToPublishDirectory="Always" />  
  </ItemGroup>

Когда я строю в режиме выпуска, я вижу содержимое, доступное внутри wwwroot, предоставляемое Webpack, но когда веб-сайт публикуется, папка wwwroot есть, но пустая. Конечно, я не могу добавить файлы в решение, потому что webpack производит динамическое содержимое c, поэтому я должен использовать <Content Include="wwwroot\**\*" CopyToPublishDirectory="Always" />

1 Ответ

0 голосов
/ 16 февраля 2020

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

  <Target Name="BeforeBuild">
    <!-- Call npm build -->
    <Exec Condition="$(Configuration) == 'Release'" Command="npm install" WorkingDirectory="ClientApp">
    </Exec>
    <Exec Condition="$(Configuration) == 'Release'" Command="npm run build" WorkingDirectory="ClientApp">
    </Exec>
    <Exec Condition="$(Configuration) == 'Release'" Command="xcopy.exe  $(SourceDirectory) $(DestinationDirectory) /Y /E">
    </Exec>
  </Target>
  <Target Name="SpaBeforeBuild" AfterTargets="BeforeBuild">
    <ItemGroup>
      <Content Include="wwwroot\**" />
    </ItemGroup>
  </Target>

Порядок:

  1. Компиляция упакуйте и переместите из папки сборки в wwwroot
  2. Во время публикации sh установите для всех скомпилированных файлов значение «Содержимое», что позволит MsBuild помещать их в папку Опубликованный сайт
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...