我有一个C#DLL项目Visual Studio解决方案。 该解决方案还具有一个测试项目,它引用了C#DLL项目的输出。 引用的项目DLL已设置复制本地=真。
如果我运行从Visual Studio这个测试,它工作正常。
但是,如果我从MSBuild任务运行,由于某种原因,MSTest的不引用C#DLL复制到MSTest的工作文件夹,所以测试失败。 奇怪的是,所有其他引用libaries被复制到MSTest的工作文件夹。 如果我把一个
[DeploymentItem(@"PleaseCopyThis.dll")]
我的测试方法之前,最后它被复制到MSTest的工作文件夹和我的测试运行正常。
但是,为什么Visual Studio中仅复制引用的DLL这不是解决方案的一部分,但不复制引用的项目的dll?
所以,我发现这篇文章: https://web-beta.archive.org/web/20140803214948/http://www.dotnetthoughts.net:80/mstest-exe-does-not-deploy-all-items/
似乎是一个MSTEST问题。
因为我有同样的问题我想出一个办法解决它。 在我的案例引用的DLL的地方从来没有真正从testproject直接使用(altough他们通过使用反射使用)。 为了解决它,我添加了下面的代码识别TestClass:
[AssemblyInitialize]
public static void InitializeReferencedAssemblies(TestContext context)
{
ObjectInAssemblyX dummy = new ObjectInAssemblyX();
ObjectInAssemblyY dummy2 = new ObjectInAssemblyY();
}
现在,他们正在使用,使他们将被复制