C# 复制本地=错误文件未找到异常问题

C# 复制本地=错误文件未找到异常问题,c#,.net,reference,filenotfoundexception,copy-local,C#,.net,Reference,Filenotfoundexception,Copy Local,嗨,我知道这一点,但没有得到答案。 如果要使用安装在C:\Program files(x86)\Dummu\u API.dll上的dll,则会出现问题 当我运行我的应用程序时,它会引发异常: 无法加载文件或程序集“Dummy_API,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。系统找不到指定的文件 我的项目引用为Copy Local=false和specific version=false。我的项目也是x86平台的目标

嗨,我知道这一点,但没有得到答案。 如果要使用安装在C:\Program files(x86)\Dummu\u API.dll上的dll,则会出现问题

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

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

我的项目引用为Copy Local=false和specific version=false。我的项目也是x86平台的目标


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

所以文件不在GAC中,也没有本地副本。你已经消除了它只能从两个地方加载的功能-我不知道你为什么期望它能起作用


您需要将Copy Local=true或将Dummy_API.dll安装到将运行代码的计算机上的全局程序集缓存中。一个或另一个。

因此文件不在GAC中,并且没有本地副本。你已经消除了它只能从两个地方加载的功能-我不知道你为什么期望它能起作用

您需要将Copy Local=true或将Dummy_API.dll安装到将运行代码的计算机上的全局程序集缓存中。一个或另一个。

选项1

您可以告诉您的应用程序,如果在引用中找不到程序集,您将自己解析程序集。为此:

在应用程序中,主方法连接程序集解析器:

AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
确保在主方法中未使用动态解析的程序集。

您的解析器方法代码(这是您加载程序集的地方-看看ResolveEventArgs,我刚刚硬编码了一个,但是您可以从这里的不同位置解析不同的程序集)

选项2

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


选项1

您可以告诉您的应用程序,如果在引用中找不到程序集,您将自己解析程序集。为此:

在应用程序中,主方法连接程序集解析器:

AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
确保在主方法中未使用动态解析的程序集。

您的解析器方法代码(这是您加载程序集的地方-看看ResolveEventArgs,我刚刚硬编码了一个,但是您可以从这里的不同位置解析不同的程序集)

选项2

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


我不知道您是否选择了正确的项目类型,对于我来说,我发现我在一开始就选择了dot net核心类型(控制台应用程序)项目,然后我将该项目转移到了dot net framework(控制台应用程序),它对我很有效

还有另一种快速方法可以检查你是否和我有同样的问题:

  • 创建项目app.config并对其进行编译后,找到的是.dll.config,而不是.exe.config
  • “引用”选项卡替换为“依赖项”选项卡
  • 项目属性框架选择只能是core x.x或net 5.0,而不能是框架3.0/4.0/4.5等

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

    我不知道您是否选择了正确的项目类型,对于我来说,我发现我在一开始就选择了dot net核心类型(控制台应用程序)项目,然后我将该项目转移到了dot net framework(控制台应用程序),它对我很有效

    还有另一种快速方法可以检查你是否和我有同样的问题:

  • 创建项目app.config并对其进行编译后,找到的是.dll.config,而不是.exe.config
  • “引用”选项卡替换为“依赖项”选项卡
  • 项目属性框架选择只能是core x.x或net 5.0,而不能是框架3.0/4.0/4.5等

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

    如果它与可执行文件不在同一目录中,也不在GAC中,您希望您的应用程序如何找到它?基本上您的意思是,除非我将Dll安装到GAC中,否则我无法从(例如)我的文档中引用Dll?如何在全局程序集缓存中安装Dummy_API?只需将Dummy_API.dll与应用程序一起部署会更容易。要在GAC中安装DLL,您需要使用命令行接触每台计算机。如果它与可执行文件不在同一目录中,并且不在GAC中,您希望您的应用程序如何找到它?基本上,您的意思是,除非我将DLL安装到GAC中,否则我无法引用(例如)我的文档中的DLL?如何在全局程序集缓存中安装Dummy_API?只需将Dummy_API.dll与应用程序一起部署会更容易。要在GAC中安装DLL,需要使用命令行接触每台计算机。如何在全局程序集缓存中安装虚拟API?但基本上,您的意思是,除非我将Dll安装到GAC?@user2510947中,否则我无法引用(例如)我的文档中的Dll。默认情况下,您的可执行文件将从GAC、本地目录(例如CopyLocal=true)或从lahsrah答案中配置的探测路径中探测程序集。它不会在任何其他文件夹中搜索计算机中的Dummy_API.dll。如何在全局程序集缓存中安装Dummy_API?但基本上,您的意思是,除非我将Dll安装到GAC?@user2510947中,否则我无法引用(例如)我的文档中的Dll。默认情况下,您的可执行文件将从GAC、本地目录(例如CopyLocal=true)或从lahsrah答案中配置的探测路径中探测程序集。它不会在计算机的任何其他文件夹中搜索Dummy_API.dll。它不起作用。这听起来似乎可以工作,有另一种方法来指示我的程序在哪里搜索程序集?抱歉-我刚刚读到这只适用于app base Directory的子目录很好,谢谢,这会很有帮助,因为我可以“复制到”
    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <probing privatePath="PathToMyAssemblies\" />
      </assemblyBinding>
    </runtime>