C# 在WindowsCE项目中定义的接口的UnitTest中修复CA2123

C# 在WindowsCE项目中定义的接口的UnitTest中修复CA2123,c#,unit-testing,windows-ce,C#,Unit Testing,Windows Ce,在构建项目和单元测试时,我从FxCop收到一个错误。显示的错误类似于Mocks\MockAudio.cs(36):Microsoft.Security:将以下安全属性添加到“MockAudio.InitializeAudio()”以匹配基本方法“IAudio.InitializeAudio()”上的LinkDemand:“SecurityCriticalAttribute”。 但是,我的接口是在WindowsCE.NET 3.5项目中定义的,如下所示: public interface IAud

在构建项目和单元测试时,我从FxCop收到一个错误。显示的错误类似于
Mocks\MockAudio.cs(36):Microsoft.Security:将以下安全属性添加到“MockAudio.InitializeAudio()”以匹配基本方法“IAudio.InitializeAudio()”上的LinkDemand:“SecurityCriticalAttribute”。

但是,我的接口是在WindowsCE.NET 3.5项目中定义的,如下所示:

public interface IAudio : IDisposable
{
    void InitializeAudio();
    void PlayAudio(int successDuration, int successFrequency);
}
我的单元测试是在一个单独的类库中编写的:

public class MockAudio : IAudio
{
    public void Dispose()
    {
        this.Dispose(true);
        GC.SuppressFinalize(this);
    }

    public void InitializeAudio()
    {
    }

    public void PlayAudio(int successDuration, int successFrequency)
    {
    }

    protected virtual void Dispose(bool disposing)
    {
    }
}
据我所知,我还没有在IAudio接口上指定LinkDemand!添加
SecurityCritical
如下:

public class MockAudio : IAudio
{
    public void Dispose()
    {
        this.Dispose(true);
        GC.SuppressFinalize(this);
    }

    [SecurityCritical]
    public void InitializeAudio()
    {
    }

    public void PlayAudio(int successDuration, int successFrequency)
    {
    }

    protected virtual void Dispose(bool disposing)
    {
    }
}

这并不能解决问题。还有其他人见过这个吗?在线搜索并没有返回答案,而且谈论了很多关于C++/C的话题。在我的例子中,我纯粹是在用C。谢谢。

您使用的是什么单元测试框架(我这样问是因为MSTEST需要
[TestClass]
属性之类的东西)?这是08年版吗?它确实让人感觉你有桌面程序集引用,而不是设备引用。这是在VS'08中-IAudio是在针对Windows CE的智能设备项目中定义的,MockAudio类是在测试项目中定义的,因此它可以在我的桌面上运行。我确实使用MSTEST,并且有使用MockAudio的测试类和测试方法,MockAudio本身没有[TestClass]属性,因为它本身不包含测试。啊,所以mock实现在引用CF程序集的桌面程序集中。这背后的理论认为它应该起作用,但我认为现实并不能解决这个问题。最好是为您的代码创建一个单独的FFx版本,以便在桌面上进行测试。它实际上只是一个包含*.cs的新项目文件。测试项目引用了Windows CE程序集,没有问题,并且测试工作正常。我应该在我的原始帖子中提到,抛出错误的是FxCop,但为了有一个绿色构建,我应该修复它。构建验收标准的一部分是具有高水平的代码覆盖率-因此测试必须测试Windows CE构建,否则拥有桌面目标项目可能解决了我的问题。谢谢