Почему добавление папки решения в Visual Studio меняет файлы проекта, и есть ли способ предотвратить это? - PullRequest
2 голосов
/ 10 июня 2019

Я добавляю тестовый проект ко многим решениям в основном репозитории нашего проекта.

В процессе я заметил, что добавление «Папки решений» в файл .sln изменяет многие проекты в решении. Я не могу думать ни о какой логической причине, это было бы так Я только говорю о добавлении файла решения, до Я добавляю тестовый проект.

Все проекты в решении - это проекты на C #, если это что-то изменит.

Кто-нибудь знает, почему это так? Это предполагаемое поведение или ошибка? Кроме того, есть ли способ предотвратить это?

Два изображения ниже показывают поведение, о котором я говорю:

Перед добавлением новой папки решения :

Before adding solution folder.  No project changes.

После добавления новой папки решения :

After adding solution folder.  Project files have changed.

Насколько я могу судить, изменения не имеют смысла :

The project files changes are meaningless.

1 Ответ

2 голосов
/ 10 июня 2019

Это немного странно, но такие вещи случаются, когда люди имеют несколько решений и фиксируют корпус в одном решении, а не в другом. Когда файл проекта будет повторно обработан (поскольку проект добавлен, переименован, элемент решения изменен и т. Д.), Он подберет исправленный корпус. Если файл решения имеет «правильный» корпус, ничто не может измениться, но если файл решения не соответствует, это может вызвать этот каскад.

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

Лучший способ исправить это - за один раз устранить проблемы с оболочкой в ​​файловой системе, файлах проекта и файлах решений. Делать это с помощью текстового редактора обычно проще, чем с помощью системы проектов Visual Studio. Поиск и замена Regex может творить чудеса здесь. Убедитесь, что вы исправили все это сразу:

  • Содержимое (всего) файла (ов) решения
  • Файл .*proj, вызывающий проблему
  • Путь к файловой системе (вам может потребоваться сначала изменить больше, чем регистр, чтобы изменить регистр). Также убедитесь, что ваша система контроля версий примет изменения.
  • Ссылки на проект в других .*proj файлах

Когда фиксирован корпус одного проекта, изменения могут каскадно переходить на другие файлы проекта, которые ссылаются на проблемный проект. Элемент ProjectReference в файле проекта имеет относительный путь файловой системы к проблемному проекту, а также фиксирует его имя. Это хорошо видно на скриншоте, который вы разместили:

enter image description here

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