C# 生成中缺少程序集

C# 生成中缺少程序集,c#,.net,visual-studio-2012,assemblies,C#,.net,Visual Studio 2012,Assemblies,我有一个第三方库,它由两个在我的核心项目中引用的程序集组成。 其中一个程序集是从我的核心项目中的代码中静态引用的,另一个程序集仅在web项目的web.config中使用。核心项目又从Web项目中引用 问题是,当我启动web应用程序时,该应用程序崩溃,因为由于缺少第二个程序集,无法解析web.config。我猜编译器无法理解核心项目应该包含第二个程序集,因为它通过web.config松散链接 我不想将程序集添加到web项目中,因为这将是紧密耦合的,对程序集具有依赖性的不是web项目,而是核心项目

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

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

我不想将程序集添加到web项目中,因为这将是紧密耦合的,对程序集具有依赖性的不是web项目,而是核心项目

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

这有点像黑客,但好在它只影响核心项目,而核心项目是唯一应该了解这个第三方库的项目。
抛出新异常
是为其他开发人员准备的,这样他们就知道他们无法删除它,并且它会处理一个未使用的警告

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

编辑:制作了一个小助手类

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"));
    }
}
公共静态类Util
{
publicstaticvoid-EnsureStaticReference()
{
var虚拟=类型(T);
if(dummy==null)
抛出新异常(string.Format(“此代码用于确保编译器将包含程序集”);
}
}

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

这是在Connect上,解决办法:一个事后构建的步骤。如果构建事件意味着用魔法字符串写拷贝代码,我的上述解决方案必须考虑更干净吗?”安德斯,你的解决方案检查是否存在,后构建者只复制它们。我认为您应该同时使用这两种方法,或者将该引用添加到您的项目中,不要再担心耦合,无需在我的解决方案中使用copy。所以,我认为我的解决方案是最好的,如果你不想使用魔术字符串和copt的东西,或不想引用它从主机项目
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"));
    }
}