Может ли Visual Studio использовать .editorconfig вне иерархии каталогов? - PullRequest
0 голосов
/ 24 октября 2019

У нас очень большое количество решений, распределенных по большому количеству репозиториев, которые не всегда разделяют иерархию каталогов таким образом, чтобы нам было легко обновить .editorconfig так, чтобы он применялся ко всем проектам / решениям ворганизация. В настоящее время мы применяем всю нашу конфигурацию анализа кода через внутренний пакет NuGet, и я надеялся, что мы сможем также включить наши настройки .editorconfig для всей организации?

Я попытался провести быстрый эксперимент, добавив следующее кпроект, чтобы увидеть, будут ли связаны связанные файлы (так как мы могли бы просто добавить это в файл props, который у нас уже есть в пакете NuGet), но в настоящее время это не выглядит как должное.

  <ItemGroup>
    <None Include="C:\SomeAlternatePath\ECTest\.editorconfig" Link=".editorconfig" />
  </ItemGroup>

Существуют ли какие-либо другие свойства или механизм MSBuild, которые мы могли бы использовать, чтобы облегчить эту задачу без буквальной записи дубликата файла в каждое решение / проект / репо?

1 Ответ

1 голос
/ 25 октября 2019

Есть ли какое-либо другое свойство или механизм 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 см. этот .

Надеюсь, что все вышеизложенное поможет:)

...