Visual Studio продолжает использовать UnitTestFramework 10.0.0.0

У меня есть решение с несколькими проектами. Один из проектов включает дополнительные методы Assert для модульного тестирования. Это ссылки Microsoft.VisualStudio.QualityTools.UnitTestFramework 10.1.0.0, Он также включает в себя другие тестовые проекты, которые ссылаются на UnitTestFramework Microsoft и мой проект с дополнительными методами assert.

Всякий раз, когда я перезагружаю Visual Studio и компилирую, я получаю следующее предупреждение:

Обнаружены конфликты между разными версиями одной и той же зависимой сборки.

Я попытался изменить все ссылки на UnitTestFramework на 10.1.0.0, но после перезапуска Visual Studio снова устанавливает их на 10.0.0.0. Я даже пытался изменить файл проекта вне Visual Studio, но после открытия проекта в Visual Studio ссылки снова показывают старую версию в обозревателе решений. При закрытии Visual Studio без внесения каких-либо изменений в файл он спрашивает, сохранять ли изменения в файлах проекта.

Как запретить Visual Studio изменять версию моего ссылочного UnitTestFramework в моих проектах?

1 ответ

Была такая же проблема. Один из наших разработчиков реорганизовал сборки, и его VS по неизвестной причине изменил это:

<Choose>
  <When Condition="('$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == '') and '$(TargetFrameworkVersion)' == 'v3.5'">
    <ItemGroup>
      <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
    </ItemGroup>
  </When>
  <Otherwise>
    <ItemGroup>
      <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework" />
    </ItemGroup>
  </Otherwise>
</Choose>

в это:

<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Choose>
  <When Condition="('$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == '') and '$(TargetFrameworkVersion)' == 'v3.5'">
    <ItemGroup>
      <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
    </ItemGroup>
  </When>
  <Otherwise />
</Choose>

Первая строка которого постоянно менялась в системе всех остальных (те же симптомы, что и у вас).

Так как мы все равно не планируем поддерживать 3.5, я исправил это, убрав раздел "Выбор" и упростив его до:

<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework" />

(полностью удалив конкретную версию из ссылки)

В моем случае в VS2017+Resharper я удалил ссылку на v 10.0.0.0 и повторно добавил ссылку на 10.1.0.0. Простое переназначение ссылки в браузере ссылок не помогло, и, как ни странно, не вернули изменения в моем файле Tests.csproj в системе контроля версий.

Другие вопросы по тегам