我有一个带有C#dll项目的Visual Studio解决方案。该解决方案还有一个测试项目,它引用了C#dll项目的输出。引用的项目dll已设置Copy Local = true。
如果我从Visual Studio运行此测试,它可以正常工作。
但是如果我从MSBuild任务运行它,由于某种原因,MSTest不会将引用的C#dll复制到MSTest工作文件夹,因此测试失败。 奇怪的是,所有其他引用的库都被复制到MSTest工作文件夹。 如果我放一个
[DeploymentItem(@"PleaseCopyThis.dll")]
在我的测试方法之前,最后它被复制到MSTest工作文件夹,我的测试运行正常。
但是为什么Visual Studio只复制不属于解决方案的引用dll,但不复制引用的项目dll?
答案 0 :(得分:14)
似乎是mstest问题。
因为我遇到了同样的问题,所以我找到了解决问题的方法。在我的例子中,引用的dll是从未实际直接从testproject使用的(尽管它们是通过使用反射来使用的)。 为了解决这个问题,我添加了一个带有以下代码的测试类:
[AssemblyInitialize]
public static void InitializeReferencedAssemblies(TestContext context)
{
ObjectInAssemblyX dummy = new ObjectInAssemblyX();
ObjectInAssemblyY dummy2 = new ObjectInAssemblyY();
}
现在使用它们以便复制它们