繁体   English   中英

Copy local = false file not found 异常问题

[英]Copy local = false file not found exception issue

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

当我运行我的应用程序时,它抛出异常:

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

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

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

选项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>

所以该文件不在 GAC 中,也没有本地副本。 您已经消除了它可以从中加载的仅有的两个位置 - 我不知道您为什么期望它起作用。

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

不知道你选对了项目类型,至于我,我发现我一开始选择了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等。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM