【发布时间】:2011-03-01 21:19:59
【问题描述】:
我正在尝试设置一个 C# 项目,该项目将在我构建时运行 xUnit 测试,以便我可以在持续集成中使用它们。我有一个常规项目,一个使用 xUnit 的类库测试项目,以及我的测试运行程序项目。从我读过的所有内容看来,我应该能够通过在测试运行程序项目中执行此操作来完成此操作:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Test"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
[auto-created project stuff]
<UsingTask AssemblyFile="xunit.runner.msbuild.dll"
TaskName="Xunit.Runner.MSBuild.xunit" />
<Target Name="Test">
<xunit Assembly="$(MSBuildProjectDirectory)\..\OnePageOneDb.Tests\bin\Debug\OnePageOneDb.Tests.dll" />
</Target>
</Project>
当我在更改后构建解决方案(通常是编辑 .csproj 文件)时,我得到了这个:
“Xunit.Runner.MSBuild.xunit”任务 无法从程序集中加载 C:\Users[我的用户名]\Code\OnePageOneDb\OnePageOneDb.TestRunner\xunit.runner.msbuild.dll。 无法加载文件或程序集 'file:///C:\Users[myusername]\Code\OnePageOneDb\OnePageOneDb.TestRunner\xunit.runner.msbuild.dll' 或其依赖项之一。系统 找不到指定的文件。 确认 声明是正确的,即 程序集及其所有依赖项是 可用,并且该任务包含 实现的公共类 Microsoft.Build.Framework.ITask。
即使我将 xunit.runner.msbuild.dll 和 xunit.runner.utility.dll 添加到项目所指位置的项目中,我也会收到此消息。但是,如果我在没有任何更改的情况下再次构建,我会一直得到这个:
未找到“xunit”任务。查看 如下: 1.) 名称 项目文件中的任务是一样的 作为任务类的名称。 2.) 的 任务类是“公共的”并实现 Microsoft.Build.Framework.ITask 界面。 3.) 任务正确 在中声明 项目文件,或在 *.tasks 文件中 位于 "C:\Windows\Microsoft.NET\Framework\v4.0.30319" 目录。
但我已经检查了所有这些东西:
- xunit.runner.msbuild.dll 中的任务类为
Xunit.Runner.MSBuild.xunit(类名中xunit 为小写)。 - 任务类继承自Task,后者实现了ITask。
- 所以也许 UsingTask 有问题,但我不知道是什么问题。
(我还认为问题可能是 xunit.runner.msbuild.dll 是针对 .NET 2.0 的,我使用的是 VS 2010,但我在 .NET 2.0 中重新创建了测试运行程序项目,问题仍然存在。 )
谁能帮忙?
【问题讨论】:
标签: msbuild msbuild-task xunit