0

我有一个第三方库,它由我的核心项目中引用的两个程序集组成。其中一个程序集是从我的 Core 项目中的代码静态引用的,另一个仅在 web 项目的 web.config 中使用。反过来,核心项目是从 Web 项目中引用的。

问题是当我启动 Web 应用程序时应用程序崩溃,因为缺少第二个程序集,无法解析 web.config。我猜编译器无法理解核心项目应该包含第二个程序集,因为它通过 web.config 松散地链接。

我不想将程序集添加到 Web 项目中,因为这将是紧密耦合的,它不是依赖于程序集的 Web 项目,而是核心项目。

我这样做解决了它(在使用第三方程序集的核心项目类中):

    static MyClass()
    {
        var dummy = typeof(ThirdPartyClass);
        if (dummy == null)
            throw new Exception("Do not remove reference to 'ThirdPartyClass'");
    }

它有点 hack,但好的是它只影响 Core 项目,这是唯一应该了解这个第三方库的项目。这throw new Exception是为其他开发人员准备的,以便他们了解他们无法删除它,而且它会处理未使用的警告。

我的问题,这是一个很好的有效解决方案,还是有更好的解决方案?

编辑:做了一个小助手类

public static class Util
{
    public static void EnsureStaticReference<T>()
    {
        var dummy = typeof(T);
        if(dummy == null)
            throw new Exception(string.Format("This code is used to ensure that the compiler will include assembly"));
    }
}
4

1 回答 1

0

可能它失败了,因为 dll 不在 bin 目录中。尝试将 ThirdPartyClass.dll 添加到项目中,然后将其设置为“始终复制”。希望有帮助

于 2013-10-19T00:15:18.743 回答