Создайте несколько конфигураций в одном скриптеC#

Место общения программистов C#
Anonymous
Создайте несколько конфигураций в одном скрипте

Сообщение Anonymous »

У меня есть файл решения (проекты C#), который имеет несколько конфигураций. Каждая конфигурация устанавливает другую целевую платформу (от net48 до net10.0-windows). Проблема в том, что в Visual Studio, когда я пытаюсь выполнить пакетную сборку, возникает проблема с целями. Если, например, мой пользовательский интерфейс в настоящее время настроен на net8.0-windows, то он будет нормально создавать конфигурации, ориентированные на эту версию, но другие конфигурации не будут работать. Если я переключу пользовательский интерфейс на конфигурацию, использующую net48, он немного обновится, а затем правильно построит его, но не сможет выполнить остальные и т. д. Я могу построить каждый из них по отдельности в VS, но кажется, что должен быть лучший способ.
Вопрос в том, что делает VS, когда я переключаю цель конфигурации пользовательского интерфейса, и есть ли способ сделать это в сценарии PowerShell или что-то, что позволило бы мне заскриптовать все это. Основная логика сценария будет просто для каждой конфигурации:
  • Делать все, что делает VS, чтобы подготовиться к этой конфигурации
  • Создать конфигурацию
  • Повторить для следующей конфигурации
Возможно ли это? Я пробовал довольно много, но ничего не получилось. Я использую сборку dotnet и восстановление dotnet.
РЕДАКТИРОВАТЬ
Хорошо, извините, наверное, я думал, что выразился ясно, но мне следовало включить более подробную информацию. В качестве примера файла .csproj у меня есть следующий:

Код: Выделить всё


Library
**My Root**
**My Assembly Name**
D2024;D2025;D2026;D2027;R2024;R2025;R2026;R2027


net10.0-windows
..\..\Build2027\
true

...
Другие конфигурации аналогичны показанной здесь конфигурации 2027, но имеют другое значение для TargetFramework и OutputPath. Мое приложение является надстройкой к родительскому приложению (Autodesk Revit), и мне нужно поддерживать несколько версий родительского программного обеспечения с помощью одной моей версии (отсюда и разная таргетинг). Родительское программное обеспечение определяет версию .NET. Как описано, когда я переключусь, скажем, с R2026 (нацеленный на net8.0-windows) на R2027 (нацеленный на net10.0-windows), VS что-то сделает, переключив платформу, для которой он анализирует, и через некоторое время подумает, что он будет на новой платформе и будет правильно для нее собирать.
Я не думаю, что смогу использовать многоадресный таргетинг, потому что тогда все выпуски будут пытаться ориентироваться на все платформы и не будут работать.
Что касается сборки, вот действительно простой сценарий, который я придумал:

Код: Выделить всё

for ($i = 2024; $i -le 2027; $i++){
"Building for Revit $i"
dotnet build ./*MySolution.sln --configuration R$i --no-incremental
}
Я также попробовал использовать ChatGPT, чтобы посмотреть, сможет ли он найти лучший вариант (я очень новичок в PowerShell), и он дал мне несколько различных вариантов с использованием восстановления dotnet перед сборкой, но все они столкнулись с той или иной версией ошибки в разных конфигурациях. Опять же, я недостаточно знаю PowerShell, чтобы понять, чего-то не хватает или я пытаюсь сделать что-то невозможное...

Вернуться в «C#»