C# 异常:无法加载文件或程序集XXXX或其中一个';它的依赖性。系统找不到指定的文件

C# 异常:无法加载文件或程序集XXXX或其中一个';它的依赖性。系统找不到指定的文件,c#,.net,winforms,controls,static-libraries,C#,.net,Winforms,Controls,Static Libraries,我有一个C#解决方案,包含3个C#.Net framework 4.7.2项目,其中包括一个简单类库、一个Windows窗体控件库和一个Windows窗体测试应用程序。我创建了一个控件,该控件在公共类“ColorHelper”中调用一个静态函数,用于根据控件的前颜色检索二次混合颜色。当此函数与控件位于同一项目中时,它在设计器和运行时都可以正常工作,但当放置在第三个项目(即类库)中时会引发此异常。我引用了这个3r项目,还包括使用声明。语法似乎还可以,编译时没有错误,但是当我想将控件放在测试窗体上时

我有一个C#解决方案,包含3个C#.Net framework 4.7.2项目,其中包括一个简单类库、一个Windows窗体控件库和一个Windows窗体测试应用程序。我创建了一个控件,该控件在公共类“ColorHelper”中调用一个静态函数,用于根据控件的前颜色检索二次混合颜色。当此函数与控件位于同一项目中时,它在设计器和运行时都可以正常工作,但当放置在第三个项目(即类库)中时会引发此异常。我引用了这个3r项目,还包括使用声明。语法似乎还可以,编译时没有错误,但是当我想将控件放在测试窗体上时,会引发异常

using System;
using System.Drawing;

namespace ASD.Drawing.Helpers
{
    public class ColorHelper : object
    {

        public static double BlendColor(double foreColor, double backColor, double alpha)
        {
            return Math.Min(Math.Max(backColor + alpha * (foreColor - backColor), 0.0D), 255.0D);
        }

        /// <summary>
        /// Adjust the color by lighten or darken the color
        /// </summary>
        /// <param name="color">The base color</param>
        /// <param name="gradientPercentage">The percentage of gradient. Negative to darken the color and negative to lighten the color.</param>
        /// <returns></returns>
        public static Color GradientColor(Color color, int gradientPercentage)
        {
            if (gradientPercentage == 100) return color;

            //if positive then blend with white else blend with black
            float backColor = gradientPercentage > 0 ? 255.0F : 0.0F;

            // 0 = transparent foreColor; 1 = opaque foreColor
            double alpha = 1.0F - Math.Abs(Math.Max(Math.Min(gradientPercentage, 100), -100)) / 100.0;

            byte r = (byte)BlendColor(color.R, backColor, alpha);
            byte g = (byte)BlendColor(color.G, backColor, alpha);
            byte b = (byte)BlendColor(color.B, backColor, alpha);

            return Color.FromArgb(color.A, r, g, b);
        }
    };
}
使用系统;
使用系统图;
命名空间ASD.Drawing.Helpers
{
公共类ColorHelper:对象
{
公共静态双混合色(双前向色、双后向色、双alpha)
{
返回Math.Min(Math.Max(backColor+alpha*(foreColor-backColor)),0.0D),255.0D;
}
/// 
///通过使颜色变亮或变暗来调整颜色
/// 
///底色
///渐变百分比。负片使颜色变暗,负片使颜色变亮。
/// 
公共静态颜色渐变颜色(颜色、int渐变百分比)
{
如果(gradientPercentage==100)返回颜色;
//如果为正值,则与白色混合,否则与黑色混合
浮动背景色=渐变百分比>0?255.0F:0.0F;
//0=透明前景色;1=不透明前景色
double alpha=1.0F-Math.Abs(Math.Max(Math.Min(gradientPercentage,100),-100))/100.0;
字节r=(字节)BlendColor(color.r,backColor,alpha);
字节g=(字节)BlendColor(color.g,backColor,alpha);
字节b=(字节)BlendColor(color.b,backColor,alpha);
返回颜色.FromArgb(颜色.A、r、g、b);
}
};
}
该函数是从Windows窗体控件库调用的

using ASD.Drawing.Helpers;
using ASD.Forms.Controls;
using System;
using System.Drawing;
using System.Drawing.Drawing2D;

namespace ASD.Forms.Renderers
{
    /// <summary>
    /// Base class for the button renderers
    /// </summary>
    public class ButtonRenderer : BaseRenderer
    {
        ...

        /// <summary>
        /// Draw the body of the control
        /// </summary>
        /// <param name="Gr"></param>
        /// <param name="rc"></param>
        /// <returns></returns>
        public virtual bool DrawBody(Graphics Gr, RectangleF rc)
        {
            if (Button == null)
                return false;

            Color bodyColor = Button.ButtonColor;
            Color cDark = ColorHelper.GradientColor(bodyColor, -80);
            ...
        }
        ...
    }
}
使用ASD.Drawing.Helpers;
使用ASD.Forms.Controls;
使用制度;
使用系统图;
使用System.Drawing.Drawing2D;
命名空间ASD.Forms.Renderers
{
/// 
///按钮渲染器的基类
/// 
公共类按钮渲染器:BaseRenderer
{
...
/// 
///绘制控件的主体
/// 
/// 
/// 
/// 
公共虚拟bool拉丝机(图形Gr、矩形rc)
{
如果(按钮==null)
返回false;
颜色bodyColor=Button.ButtonColor;
Color cDark=ColorHelper.GradientColor(bodyColor,-80);
...
}
...
}
}

自从我开始编程(大约5年)以来,已经有很长一段时间了,我忘记了很多,在这里我真的很茫然。有人能帮我吗?

首先,您在ASD.Forms.UITest项目中对ASD.Forms的引用已损坏。删除它,编译ASD.Forms和ASD.Drawing项目,然后再次将ASD.Forms引用添加到ASD.Forms.UITest,然后确保将ASD.Forms.UITest项目设置为启动项目(在项目>设置为启动项目中单击鼠标右键)为什么启动项目必须有启动文件(例如.exe)。之后,应能正常工作:


目前,我已将ColorHelper移回Windows窗体控件库项目,但忘记删除项目对ASD.Drawing项目(类库)的引用,并引发了相同的异常。但是,当我删除项目的引用时,它在设计人员和运行时都可以正常工作。我怎么可能不能引用thsi项目中的另一个项目?你在哪里实例化你的ColorHelper?它看起来就像是一个静态类一样使用它:var colorheloper=new colorheloper();Color cDark=colorHelper.GradientColor(bodyColor,-80);我没有被实例化,实际上是作为一个静态类使用的。但我认为问题在于我的项目引用了解决方案中的其他项目。我正在尝试重构一个自定义控件以在表单中使用。因此,控件将在设计器中配置,并需要相应地显示。我总是乐于接受建议和增强,因为很多东西已经从我的大脑中消失了。你们有git存储库中的代码吗?谢谢Augusto。我已经清理和重建了解决方案好几次,但它从来没有工作。现在我完全按照你的步骤做了,而且效果很好。