Visual Studio .runsettings, исключая слишком много сборок

Я использую файл.runsettings для управления сборками, которые генерируют результаты покрытия кода.

В следующем разделе моего файла.runsettings я получаю все сборки, включая мои тестовые проекты, некоторые нежелательные сборки TFSBuildExtensions:

<!-- Match assembly file paths: -->
<ModulePaths>
  <Include />
  <Exclude />
</ModulePaths>

Поэтому я изменил его, чтобы исключить мои тестовые проекты, которые называются MyCompany.MyProject1.Tests.dll.

<!-- Match assembly file paths: -->
<ModulePaths>
  <Include />
  <Exclude>
    <ModulePath>.*Tests.*</ModulePath>
  </Exclude>
</ModulePaths>

Однако теперь все мои сборки исключены, и у меня остались только сборки TFSBuildExtensions.

Что я должен указать в разделе исключения, чтобы исключить следующие сборки?

  • MyCompany.MyProject1.Tests.dll
  • ...
  • MyCompany.AnyProjectName.Tests.dll
  • TFSBuildExtensions.XXX.dll

2 ответа

Решение

ОК, поэтому я обнаружил, что проблема была здесь: /questions/36747100/ispolzovanierunsettings-dlya-isklyucheniya-sborok-iz-pokryitiya-koda/36747126#36747126

Regex ищет путь, а не просто имя модуля, вам нужно.* Перед модулем, чтобы игнорировать его, то есть вы хотите игнорировать его при любом заданном пути к файлу.

Поэтому, когда я изменил его на следующий, он работал нормально:

<ModulePaths>
  <Exclude>
    <ModulePath>.*tests\.dll$</ModulePath>
    <ModulePath>.*tfsbuildextensions\..*\.dll$</ModulePath>
  </Exclude>
</ModulePaths>

Это должно делать то, что вы хотите:

<!-- Match assembly file paths: -->
<ModulePaths>
  <Include />
  <Exclude>
    <ModulePath>^.*Tests\.dll$</ModulePath>
    <ModulePath>^tfsbuildextensions\..*\.dll$</ModulePath>
  </Exclude>
</ModulePaths>
Другие вопросы по тегам