如果您必须重新编译,那么您可以这样做。我查找了 Moles 源代码,但在任何地方都找不到。然后我尝试反汇编Microsoft.Moles.Xunit.dll,我意识到该属性只有几行长。
MoledAttribute 源代码:
using System;
using System.Reflection;
using XUnit;
namespace Microsoft.Moles.Framework.Xunit
{
public sealed class MoledAttribute : BeforeAfterTestAttribute
{
// Fields
private IDisposable _molesContext;
public override void Before(MethodInfo methodUnderTest)
{
this._molesContext = MolesContext.Create();
}
public override void After(MethodInfo methodUnderTest)
{
IDisposable disposable = this._molesContext;
if (disposable != null)
{
disposable.Dispose();
}
this._molesContext = null;
}
}
}
您应该创建一个新的类库并添加对您想要的任何版本的xunit.dll的引用。它甚至应该与 1.8.0.1545 一起使用,因为我没有注意到XUnit.BeforeAfterTestAttribute的任何变化,这是唯一的依赖。