У меня есть приложение на C # (.NET Framework), которое я пытаюсь перенести с VS2015 на VS2017, и меняю файл проекта xml на формат SDK при подготовке к переходу на .NET Core.
У меня 5 из 12-ти проектов в решении, перенесенных в более новый формат проекта SDK.Я обнаружил, что VS2017 меняет части файла решения, связанные с двумя из этих обновленных проектов, и ломает мои сборки.
Мне нужна помощь для понимания , почему VS делает это изменение и как его предотвратить.Я подозреваю, что мне что-то не хватает в XML моих проектов SDK, но я не знаю, чего мне не хватает.
Я пытался включить свойство <Configurations>
в мои проекты SDK, в котором перечислены вседопустимые конфигурации, но, похоже, они не влияют на эти два проекта.Похоже, это решило проблему с другими 3 проектами SDK, но не с этими двумя.Единственное отличие состоит в том, что измененные 2 - это проекты для исполняемых файлов, а остальные 3 - для библиотек.
В моем файле решения есть следующее:
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
DebugLinux|Any CPU = DebugLinux|Any CPU
DebugMac|Any CPU = DebugMac|Any CPU
ReleaseLinux|Any CPU = ReleaseLinux|Any CPU
ReleaseMac|Any CPU = ReleaseMac|Any CPU
ReleaseWin|Any CPU = ReleaseWin|Any CPU
EndGlobalSection
Когда я удаляювсе артефакты сборки, загрузите решение в VS2017, соберите один из конфигов решения и затем закройте VS2017. Я обнаружил, что VS решила изменить несколько конфигураций в моем файле решения.Ниже приведен пример различий, которые вносит VS.
- {guid-redacted}.ReleaseLinux|Any CPU.ActiveCfg = ReleaseLinux|Any CPU
- {guid-redacted}.ReleaseLinux|Any CPU.Build.0 = ReleaseLinux|Any CPU
- {guid-redacted}.ReleaseMac|Any CPU.ActiveCfg = ReleaseMac|Any CPU
- {guid-redacted}.ReleaseMac|Any CPU.Build.0 = ReleaseMac|Any CPU
- {guid-redacted}.ReleaseWin|Any CPU.ActiveCfg = ReleaseWin|Any CPU
- {guid-redacted}.ReleaseWin|Any CPU.Build.0 = ReleaseWin|Any CPU
+ {guid-redacted}.ReleaseLinux|Any CPU.ActiveCfg = Release|Any CPU
+ {guid-redacted}.ReleaseLinux|Any CPU.Build.0 = Release|Any CPU
+ {guid-redacted}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU
+ {guid-redacted}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU
+ {guid-redacted}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU
+ {guid-redacted}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU
Он меняет все мои Release*
конфигурации на простые Release
.Мы вводим некоторую логику в проекты из значения свойства Configuration
, поэтому эти изменения разрушают эту логику.
Все изменения локализованы в разделе ProjectConfigurationPlatforms
;К счастью, VS не касается раздела SolutionConfigurationPlatforms
.
Любые предложения приветствуются;Я в конце концов пытаюсь выяснить, что идет не так.
Спасибо!
edit: VS также меняет GUID типа проекта для этих проектов с FAE04EC0-301F-11d3-BF4BОт -00C04F79EFBC до 9A19103F-16F7-4668-BE54-9A1E7A4F7556.Кажется, это ожидаемо - есть новый гид для типов проектов C # - но, возможно, он связан?