嗨,我知道has been asked,但没有得到答案。 当我想使用安装在C:\ Program files(x86)\ Dummu_API.dll
上的dll时,我遇到了问题当我运行我的应用程序时,它会抛出异常:
无法加载文件或程序集'Dummy_API,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'或其依赖项之一。系统找不到指定的文件。
我的项目的引用为Copy Local = false,特定版本= false。我的项目也是x86平台目标。
我不知道为什么我的应用程序找不到程序集。任何想法它发生了什么?
答案 0 :(得分:2)
选项1
如果在参考文献中找不到,您可以告诉您的应用程序您将自己解决程序集。要做到这一点:
在您的应用程序主方法中附加程序集解析程序:
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
确保您没有在主方法中使用动态解析的程序集。
您的解析器方法代码(这是您加载程序集的位置 - 请查看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>
答案 1 :(得分:1)
因此该文件不在GAC中,并且没有本地副本。你已经消除了它可以加载的唯一两个地方 - 我不知道为什么你期望这个工作。
您需要设置Copy Local = true或将Dummy_API.dll安装到将运行代码的计算机上的全局程序集缓存中。一个或另一个。
答案 2 :(得分:0)
不知道你选对了项目类型,至于我,我发现我一开始选择了dot net core type(console app)项目,后来我把项目转移到了dot net framework(console应用程序),它对我有用。
还有另一种快速的方法可以检查您是否和我有同样的问题:
只是一个提示或提示,希望有所帮助!