例外:无法加载文件或程序集 XXXX 或其依赖项之一。该系统找不到指定的文件
Posted
技术标签:
【中文标题】例外:无法加载文件或程序集 XXXX 或其依赖项之一。该系统找不到指定的文件【英文标题】:Exception: Could not load file or Assembly XXXX or one of it's dependencies. The system cannot find the file specified 【发布时间】:2021-08-14 03:36:37 【问题描述】:我有一个 C# 解决方案,其中包含 3 个 C# .Net 框架 4.7.2 项目,其中一个简单的类库、一个 Windows 窗体控件库和一个 Windows 窗体测试应用程序。我创建了一个控件,该控件调用公共类“ColorHelper”中的静态函数,用于根据控件的前景色检索辅助混合颜色。当此函数与控件位于同一项目中时,这在设计器和运行时都可以正常工作,但在放置在第三个项目(即类库)中时会引发此异常。我已经引用了这个 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 年)以来已经有很长一段时间了,我忘记了很多东西,我真的很茫然。有人可以帮帮我吗?
【问题讨论】:
目前我已将 ColorHelper 移回 Windows 窗体控件库项目,但忘记删除项目对 ASD.Drawing 项目(类库)的引用,并引发相同的异常。但是,当我删除项目的引用时,它在设计器和运行时都可以正常工作。我怎么可能无法在 thsi 项目中引用另一个项目? 您在哪里实例化您的 ColorHelper?看起来你像使用静态类一样使用它 试试看:var colorHelper = new ColorHelper();颜色 cDark = colorHelper .GradientColor(bodyColor, -80); 我没有实例化并且确实用作静态类。但我认为问题在于我的项目引用了解决方案中的其他项目。我正在尝试重构自定义控件以在表单中使用。因此控件将在设计器中进行配置,并需要相应地显示。我总是乐于接受建议和改进,因为很多东西已经从我的脑海中消失了。 你在 git 仓库中有这段代码吗? 【参考方案1】:首先,您在 ASD.Forms.UITest 项目中对 ASD.Forms 的引用已损坏。删除它,编译 ASD.Forms 和 ASD.Drawing 项目并再次将 ASD.Forms 引用添加到 ASD.Forms.UITest,然后确保将 ASD.Forms.UITest 项目设置为启动项目(在项目 > 设置为启动项目)为什么启动项目必须有一个启动文件(例如 .exe)。之后,它应该可以正常工作了:
【讨论】:
谢谢奥古斯托。我已经多次清理和重建解决方案,但它从未奏效。现在我按照您的确切步骤操作,它可以工作了。以上是关于例外:无法加载文件或程序集 XXXX 或其依赖项之一。该系统找不到指定的文件的主要内容,如果未能解决你的问题,请参考以下文章
无法加载文件或程序集 此处的程序集名称 或其依赖项之一。访问被拒绝
BadImageFormatException 无法加载文件或程序集或其依赖项之一。试图加载格式不正确的程序
无法加载文件或程序集“CefSharp.dll”或其依赖项之一