C# - 参考类型' ISomeInterface'在未引用的程序集中定义

时间:2017-02-17 17:17:43

标签: c# .net dll visual-studio-2015 compact-framework

我负责将我们公司的核心库从以前在Visual Studio 2008上运行的Compact Framework 2.0迁移到Visual Studio 2015,Update 3和.Net 4.6。我创建了新的类库,并将引用更改为指向较旧库的相应.Net版本。例如,如果我们有一个引用Sender.dll和Utils.dll的ProdoctCore库,那么在新的ProducCoreDotNet库中,我已经添加了对SenderDotNet.dll和UtilsDotNet.dll的引用。然后我通过添加"作为链接"将旧Compact Framework的类文件添加到新解决方案中。因此,基本上项目名称具有扩展DotNet,但名称空间与之前具有完全相同的名称。

现在我遇到的问题是我遇到了一个奇怪的错误:

"参考类型' IMonitorComponent'在未引用的程序集中定义。您必须添加对程序集' Utils,Version = 1.5.0.0,Culture = neutral,PublicKeyToken = null'"

的引用

但是,我的UtilsDotNet版本是1.0.0.0,而旧的Utils版本是2.0.0.0。

我在SO上读过几个类似的线程,但与this question中提到的不同,IMonitorComponent没有任何对其他程序集的引用。它只是一个具有几个属性的接口:

 public enum COMPONENT_STATUS
{
    ERROR,
    WARNING,
    OK,
    UNKNOWN,
    DISABLED
}

public class ComponentStatusProperty
{
    public ComponentStatusProperty(string name, COMPONENT_STATUS status, string message)
    {
        ComponentName = name;
        Status = status;
        Message = message;
    }

    public COMPONENT_STATUS Status { get; set; }
    public string Message { get; set; }
    public string ComponentName { get; set; }
}

public interface IMonitorComponent
{
    string Name { get; }
    List<ComponentStatusProperty> Statuses { get; }
    bool ComponentSoBrokenThatTheDeviceCannotWork { get; }
}

所以我没有想法,非常感谢你的帮助。另外,请详细说明你的答案,因为我之前没有做过这样的事情。

1 个答案:

答案 0 :(得分:1)

我们终于找到了原因。我们正在使用另一个使用Utils 1.5版的参考。所以我为该引用创建了另一个类库,并使用新的UtilsDotNet作为参考,并解决了问题。