Есть ли какое-либо другое свойство или механизм MSBuild, который мы могли бы использовать, чтобы облегчить эту задачу, не записывая дубликат файла в буквальном смысле для каждого решения / проекта / репо?
Боюсь, ответотрицательно. Потому что файл .editorconfig
не имеет ничего общего с msbuild или xx.csproj
. Только файловая иерархия может влиять на поведение файла конфигурации. Подробнее см. этот документ .
Некоторые тесты:
Когда я щелкаю правой кнопкой мыши по проекту => добавить .editorconfig
, чтобы добавить этот файлв текущем проекте к xx.csproj
: <None Include=".editorconfig"/>
добавлена одна строка.
Если мы установим indent_size = 32
, это будет работать для текущего проекта. Теперь мы можем right-click that file=>Exclude from Project
удалить этот файл из текущей системы проекта. (Это действие удалит <None Include=".editorconfig"/>
в xx.csproj, но файл все еще находится в той же папке, где существует xx.csproj)
Теперь перезагрузите проект, настройки (indent_size = 32) по-прежнему работают. Поэтому очевидно, что если мы поместим этот файл в каталог проекта, он вступит в силу, независимо от того, есть ли у нас определения в файле проекта (xx.csproj
).
Предложения:
Согласно вашему описанию, все ваши проекты используют один и тот же .editorconfig
файл. Поскольку рабочая область этого файла зависит от иерархии файлов, вы можете уменьшить некоторую бессмысленную работу следующим образом:
1. Поместите этот файл в папку Solution, он будет работать для всех проектов в этой папке решения
2. Поместите этот файл в папку repos
(C: \ Users \ xxx \ source \ repos), он будет работать для всех решений и проектов в этой папке.
3. Так что, если большинство ваших решенийпод путем C:\somepath
, поместите этот файл здесь, все проекты по этому пути получат выгоду от этого. И про приоритет в file hierarchy
см. этот .
Надеюсь, что все вышеизложенное поможет:)