我有一个第三方库,它包含两个在我的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"));
}
}
答案 0 :(得分:0)
可能它失败了,因为dll不在bin目录中。 尝试将ThirdPartyClass.dll添加到项目中,然后将其设置为“始终复制”。 希望它有所帮助