异常:无法加载文件或程序集 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)。之后,它应该可以正常工作了:
我有一个包含 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)。之后,它应该可以正常工作了: