15

我有一个带有 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?

4

1 回答 1

14

所以我找到了这篇文章:https ://web-beta.archive.org/web/20140803214948/http://www.dotnetthoughts.net:80/mstest-exe-does-not-deploy-all-items/

似乎是一个 mstest 问题。

因为我刚刚遇到同样的问题,所以我想办法解决它。在我的情况下,引用的 dll 从未直接从测试项目中直接使用(尽管它们是通过使用反射来使用的)。为了解决它,我添加了一个带有以下代码的测试类:

[AssemblyInitialize]
    public static void InitializeReferencedAssemblies(TestContext context)
    {
        ObjectInAssemblyX dummy = new ObjectInAssemblyX();
        ObjectInAssemblyY dummy2 = new ObjectInAssemblyY();
    }

现在它们被使用,因此它们将被复制

于 2012-09-26T11:19:44.220 回答