Почему MSTest не копирует ссылки на библиотеки проектов?
У меня есть решение Visual Studio с проектом DLL С#. Это решение также имеет тестовый проект, который ссылается на вывод проекта С# dll. Ссылка dll, на которую ссылается, имеет значение Copy Local = true.
Если я запустил этот тест из Visual Studio, он отлично работает.
Но если я запустил его из задачи MSBuild, по какой-то причине MSTest не копирует ссылочную С# dll в рабочую папку MSTest, поэтому тест завершается с ошибкой.
Странно, что все остальные ссылочные библиотеки копируются в рабочую папку MSTest.
И если я поставлю
[DeploymentItem(@"PleaseCopyThis.dll")]
перед моим тестовым методом, наконец, он скопирован в рабочую папку MSTest, и мой тест проходит нормально.
Но почему Visual Studio копирует только ссылочные dll, которые не являются частью решения, но не копирует ссылочные DLL проекта?
Ответы
Ответ 1
Итак, я нашел эту статью: https://web-beta.archive.org/web/20140803214948/http://www.dotnetthoughts.net:80/mstest-exe-does-not-deploy-all-items/
Кажется самой сложной проблемой.
Потому что у меня была одна и та же проблема, я понял, как ее исправить. В моем случае ссылка dll, где никогда фактически не использовалась непосредственно из тестового проекта (хотя они использовались с использованием отражения).
Чтобы решить эту проблему, я добавил тестовый класс со следующим кодом:
[AssemblyInitialize]
public static void InitializeReferencedAssemblies(TestContext context)
{
ObjectInAssemblyX dummy = new ObjectInAssemblyX();
ObjectInAssemblyY dummy2 = new ObjectInAssemblyY();
}
Теперь они используются, чтобы они были скопированы