2

嗨,我知道有人问过这个问题,但没有得到答案。当我想使用安装在 C:\Program files (x86)\Dummu_API.dll 上的 dll 时遇到问题

当我运行我的应用程序时,它会引发异常:

无法加载文件或程序集“Dummy_API,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。该系统找不到指定的文件。

我的项目的参考为 Copy Local = false 和特定版本 = false。我的项目也是一个 x86 平台目标。

我不知道为什么我的应用程序找不到程序集。知道发生了什么吗?

4

3 回答 3

3

选项1

您可以告诉您的应用程序,如果在引用中找不到,您将自己解决程序集。要做到这一点:

在您的应用程序的主要方法中附加程序集解析器:

AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;

确保您没有在 main 方法中使用动态解析的程序集。

您的解析器方法代码(这是您加载程序集的地方 - 查看 ResolveEventArgs 我刚刚硬编码了一个,但您可以在此处解析来自不同位置的各种程序集)

static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
    return Assembly.LoadFile(@"C:\temp\ClassLibrary1.dll");
}

选项 2

将此添加到您的 app.config(仅适用于应用程序基目录的子文件夹)

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
     <probing privatePath="PathToMyAssemblies\" />
  </assemblyBinding>
</runtime>
于 2014-02-19T22:43:33.767 回答
1

所以该文件不在 GAC 中,也没有本地副本。你已经消除了它可以加载的仅有的两个地方——我不知道你为什么期望它能够工作。

您需要设置 Copy Local=true 或将 Dummy_API.dll 安装到将运行您的代码的机器上的全局程序集缓存中。非此即彼。

于 2014-02-19T22:34:04.073 回答
0

不知道你选对了项目类型,至于我,一开始我发现我选择的是dot net core type(console app)项目,然后我把项目转移到dot net framework(console app),它对我有用。

还有另一种快速方法可以检查您是否遇到与我相同的问题:

  1. 创建项目 app.config 并对其进行编译后,您找到了 .dll.config 而不是 .exe.config
  2. 引用选项卡替换为依赖项选项卡
  3. 项目属性框架选择只能是core xx或者net 5.0,不能是framework 3.0/4.0/4.5等。

只是一个提示或提示,希望有所帮助!

于 2021-04-28T14:08:23.397 回答