异常:无法加载文件或程序集 XXXX 或其依赖项之一。该系统找不到指定的文件

Exception: Could not load file or Assembly XXXX or one of it's dependencies. The system cannot find the file specified

我有一个包含 3 个 C# .Net 框架 4.7.2 项目的 C# 解决方案,其中一个简单的 Class 库、一个 Windows 表单控件库和一个 Windows 表单测试应用程序.我创建了一个控件,该控件调用 public class“ColorHelper”中的静态函数,以根据控件的前景色检索辅助混合色。当此函数与控件位于同一项目中时,这在设计器和运行时都可以正常工作,但如果放在第三个项目(即 Class 库)中,则会抛出此异常。我已经引用了这个 3r 项目并且还包含了 using 语句。语法似乎还可以,编译时没有错误,但是当我想将控件放在测试窗体上时,抛出异常。

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);
        }
    };
}

该函数是从 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);
            ...
        }
        ...
    }
}

我已经有很长时间没有编程了(大约 5 年),我忘记了很多东西,我在这里真的很茫然。有人可以帮我吗?

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