Я работаю с NopCommerce. Фреймворк построен таким образом, что позволяет создавать плагины как дополнительные проекты в решении. Эти проекты должны ссылаться на «Ядро», которое, по сути, является развернутым веб-сайтом MVC.
Из-за природы msbuild, я не могу придумать, как (без хаков) получить выходные данные сборки проектов плагинов (файлы dll) для включения в развертывание базовой сборки, поскольку плагины требуются для сначала создайте ядро.
Я понимаю, что это круговая зависимость, и я также понимаю, что в нормальной ситуации не требуется, чтобы плагины даже знали, что веб-проект существует ... Но так оно и есть. это при использовании NopCommerce.
Я пытался сделать следующее с msbuild в файле csproj сайта:
<Target Name="NopTarget" AfterTargets="Build">
<ItemGroup>
<BuildPlugins Include="..\..\Plugins\**\*.csproj" />
</ItemGroup>
<Message Text="directory: @(BuildPlugins)" Importance="HIGH" />
<MSBuild Projects="@(BuildPlugins)" />
<ItemGroup>
<NopPlugins Include="$(MSBuildProjectDirectory)\Plugins\**\*.*" />
</ItemGroup>
<Message Text="@(BuildPlugins)" Importance="HIGH" />
<Message Text="After Build Plugin Copy - @(NopPlugins) - $(TargetDir)\%(RecursiveDir)" Importance="HIGH" />
<Copy SourceFiles="@(NopPlugins)" DestinationFolder="$(TargetDir)\Plugins\%(RecursiveDir)" />
... но я думаю, что это гигантский беспорядок. Кроме того, кажется, что он работает только на моей машине разработчика. Когда я пробую это в devops, я получаю кучу ошибок пакета nuget, связанных с неудачным восстановлением. Опять же, это проблема круговых зависимостей или порядка сборки.
(К вашему сведению, я работаю над параметризованным развертыванием для использования с Azure Devops)