如题所示。我在加载了程序集之后会报拒绝访问异常。
请问各位大神有没有什么好办法。。。我要删除掉这个dll文件,重新放一个进来。。
不可以。但是作为变通的方式,你可以通过Assembly.LoadFrom(stream)的方式动态加载字节流的程序集,然后反射调用。这样就不锁定dll文件,可以实现删除。但是问题是加载到内存的程序集无法被卸载,这意味着如果升级了dll,除非重启,否则无法生效。
.在开始菜单中,点击运行。或者你可以按下win+r
2.在打开的运行对话框中,输入regedit点击确定
3.在注册表中定位到:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs
4.在右侧会看到很多dll的注册项。找到要铲除的dll文件的路径和文件名
如果一个一个找比较麻烦,可以右键单击sharedll项上右键单击选择查找
5.在查找对话框中,输入dll文件名,然后点击查找下一步
6.右键单击找到的dll注册表项,然后选择删除。如果怕删除以后出现系统问题,你可以先将注册表导出到一个位置进行备份。
DLL文件又称"应用程序拓展",是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。
可以尝试一下先清理一下项目,然后重新生成项目
可以 .dll是库文件 你加入新的库能载入就没问题
1.删除.dll文件后放入新的.dll文件
2.重新编译
重启机器,不是系统的dll 应该不会加载的
不可以,这个在运行的时候会继续应用
直接使用360文件粉碎
可以 .dll是库文件 你加入新的库能载入就没问题
1.删除.dll文件后放入新的.dll文件
反注册,重启机器,dll 不被加载后就可了
2.在打开的运行对话框中,输入regedit点击确定
3.在注册表中定位到:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs
4.在右侧会看到很多dll的注册项。找到要铲除的dll文件的路径和文件名
如果一个一个找比较麻烦,可以右键单击sharedll项上右键单击选择查找
5.在查找对话框中,输入dll文件名,然后点击查找下一步
不可以的,这个在运行的时候会加载
不可以的,需要重启。
你是为了AutoUpdate设计的么?这个只能调用一个新的Process来处理更新程序,把本程序关掉,更新程序完成重新打开。已经Load的dll是被系统锁定的。
不可以,这个在运行的时候会继续启用
Assembly没有提供卸载程序的方法。所以方法是先将文件加载到内存中编程byte[]数组。然后使用Assembly.Load(byte[])的方法就可以反射成功了,当然也可以使用AppDomain新建一个程序域,进行加载。但是那样好像不能直接把Assembly从新建的程序域传回主程序域。试想过用Json序列化传回,没有尝试,有兴趣的朋友可以尝试一波。感谢大家的帮助!