在构建中缺少程序集

时间:2013-10-18 12:16:30

标签: c# .net visual-studio-2012 assemblies

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

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

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

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

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

它有点像黑客,但好处是它只影响核心项目,这是唯一应该了解这个第三方库的项目。其他开发人员可以使用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"));
    }
}

1 个答案:

答案 0 :(得分:0)

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