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

У меня есть решение с несколькими проектами. Один из проектов включает дополнительные методы Assert для модульного тестирования. Он ссылается на Microsoft.VisualStudio.QualityTools.UnitTestFramework 10.1.0.0. Он также включает в себя другие тестовые проекты, которые ссылаются как на Microsoft UnitTestFramework, так и на мой проект с помощью дополнительных методов 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" />

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

Ответ 2

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