关于Unity加载DLL报错

SayoKun 2021-03-05 04:34:17
首先简单描述下问题。
Unity配置好conifg启动项目进行依赖注入时报错,错误信息(错误信息如下)就是无法解析DLL文件。

InvalidOperationException: The type name or alias Database.LinqDB,Database could not be resolved.Please check your configuration file and verify this type name.

一开始我以为是配置文件写的有问题,可是再测试的过程中我发现只要是引用项目生成的DLL就可以正常运行,一旦取消引用就报错。
然后我又经过了一番尝试,发现用Assembly加载一次文件也可以正常通过。但是用Assembly.load(File.ReadAllBytes())就又不行了……
请问各位大佬,这究竟是哪里有问题?DLL每次都确保复制到Debug目录下了,文件肯定是存在的就是不能解析。

ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "DatabaseConfig.xml");//找配置文件的路径
var configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
UnityConfigurationSection section = (UnityConfigurationSection)configuration.GetSection(UnityConfigurationSection.SectionName);
_iUnityContainer = new UnityContainer();
foreach (var container in section.Containers)
{
_iUnityContainer.LoadConfiguration(section, container.Name);
}

这是加载配置文件的代码,报错是在_iUnityContainer.LoadConfiguration(section, container.Name);这里加载时出的问题。

<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Unity.Configuration" />
</configSections>
<unity>
<sectionExtension type="Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension, Unity.Interception.Configuration" />
<containers>
<container name="DatabaseContainer">
<extension type="Interception" />
<register type="IDatabase.ILinqDB,IDatabase" mapTo="Database.LinqDB,Database" />
</container>
</containers>
</unity>
</configuration>

以上是配置注册文件。
...全文
583 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
本课程主要是针对ILRuntime设计一个独立的脚本热更新框,框架的优势:1.将代码热更脱离Assetbundle资源热更,独立的部分更适用于各种不同的框架。2.加快项目的逻辑更新,bug修复.(后期修bug,多数情况下并不用动到资源,只需要更新脚本代码,无需重走资源打包发布流程,大大提升效率)3.提供热更模式和正常开发模式的快速切换接口,可以让队友像平常一样去开发.4.不依赖市面上的任何AB框架,完全兼容市面上各种不同的AB框架.5.重点:希望通过它,帮助你学习、了解ILRuntime真正在项目中的应用.框架的将提供以下这些接口,这些接口将从0开始,在Unity里将C#脚本编译成dll,然后将dll放到服务器上,再将dll下载下来,进行加载,到最后从Unity主工程调用热更新的代码逻辑.1.Create hotfixdll接口将热更部分的代码 编译成dll生成dll版本配置(MD5)2.更新对比接口本地跟服务器的dll进行版本对比3.下载热更dll下载dll本身的文件下载版本记录文件4.加载热更dll加载dll实例化:AppDomain初始化:注册跨域继承适配器注册委托适配器LitJson重定向调用性能优化(CLR绑定功能)调用热更接口Hotfix.HotfixApplication.Main 进入热更逻辑5.ILMonoBehaviour用于监听组件的生命周期,实际是桥接(调用)热更的逻辑AwakeStartEnableUpdateLateUpdate.......6.添加其他常用的库DOTweenLitJsonSpineGoogle.ProtobufTextAnimation可以根据上面的方式,自行添加依赖的库... 

110,526

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧