为什么MSTest不复制引用的项目库?

Jus*_*tin 14 msbuild dll mstest reference

我有一个带有C#dll项目的Visual Studio解决方案.该解决方案还有一个测试项目,它引用了C#dll项目的输出.引用的项目dll已设置Copy Local = true.

如果我从Visual Studio运行此测试,它可以正常工作.

但是如果我从MSBuild任务运行它,由于某种原因,MSTest不会将引用的C#dll复制到MSTest工作文件夹,因此测试失败.奇怪的是,所有其他引用的库都被复制到MSTest工作文件夹.如果我放了一个

 [DeploymentItem(@"PleaseCopyThis.dll")]
Run Code Online (Sandbox Code Playgroud)

在我的测试方法之前,最后它被复制到MSTest工作文件夹,我的测试运行正常.

但是为什么Visual Studio只复制不属于解决方案的引用dll,但不复制引用的项目dll?

ama*_*ers 14

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

似乎是mstest问题.

因为我只是有同样的问题,我想办法解决它.在我的例子中,引用的dll是从未直接从testproject中使用的(尽管它们是通过使用反射来使用的).为了解决这个问题,我添加了一个带有以下代码的测试类:

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

现在使用它们将被复制

  • @Fabian不,你不能,它只能在一个类声明之上,并且该项目将被复制 (2认同)