【问题标题】:c# force compiling a program with errors, ignoring the errorsc#强制编译有错误的程序,忽略错误
【发布时间】:2013-07-08 13:07:27
【问题描述】:

我想知道是否有一种方法可以强制 ms vs 2010 c# 编译我制作的程序,因为我有 2 个同名的 dll 可以使用,使用程序集解析我可以互换另一个,但事情两个dll都有不同的方法,根据我给它的级别,它将执行dll具有的独特方法。我可以使用动态类型,但是有没有其他方法可以告诉 ms vs 2010 在出现错误时强制编译?

说dll1有方法A,dll2有方法B,编码的时候我说if(condition) classname.A else classname.B,但只引用了dll1,导致使用classname.B出错。那么我该如何强制编译呢?还是我继续使用动态类型?

【问题讨论】:

  • 当你告诉编译器编译它不理解的东西时,你希望它做什么?

标签: c# dynamic dll reference compilation


【解决方案1】:

不,您不能强制编译出现错误。某种动态方法是您唯一的方法,例如反射或dynamic 关键字。

【讨论】:

    【解决方案2】:

    这种方法真的是“smells”。首先,不,你不能忽略这样的错误。

    有很多方法会更合理。仅举几例:使用dynamic,在dll1 和dll2 中使用classname 从相同的基类派生或实现相同的接口,使用MEF 之类的东西。

    其中一些可能对您的解决方案来说太过分了。我只是想知道您是否在问我们如何解决症状,而不是向我们寻求问题的实际根本原因的帮助。

    【讨论】:

      【解决方案3】:

      这是不可能的,因为即使 A.dll 和 B.dll 中的类同名,它仍然不是同一个类。因此,即使您以某种方式设法编译了它,并关闭了 dll,程序仍然可能会崩溃。

      正如其他人所说,使用动态或反射。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-06
        • 1970-01-01
        • 2011-11-27
        • 1970-01-01
        • 2011-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多