Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
东方怂天
xLua
提交
bbe07ea4
X
xLua
项目概览
东方怂天
/
xLua
通知
4
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
X
xLua
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
bbe07ea4
编写于
6月 07, 2018
作者:
J
johnche(车雄生)
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
规避第三方dll注入时,Assembly-CSharp程序集对第三方dll引用无法resolve的问题
上级
cf02c4e0
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
44 addition
and
5 deletion
+44
-5
Assets/XLua/Src/Editor/Hotfix.cs
Assets/XLua/Src/Editor/Hotfix.cs
+44
-5
Tools/XLuaHotfixInject.exe
Tools/XLuaHotfixInject.exe
+0
-0
Tools/XLuaHotfixInject.pdb
Tools/XLuaHotfixInject.pdb
+0
-0
未找到文件。
Assets/XLua/Src/Editor/Hotfix.cs
浏览文件 @
bbe07ea4
...
...
@@ -288,15 +288,28 @@ namespace XLua
bridgeIndexByKey
=
new
List
<
MethodDefinition
>();
var
resolver
=
injectAssembly
.
MainModule
.
AssemblyResolver
as
BaseAssemblyResolver
;
resolver
.
AddSearchDirectory
(
"./Library/ScriptAssemblies"
);
var
resolverOfInjectAssembly
=
injectAssembly
.
MainModule
.
AssemblyResolver
as
BaseAssemblyResolver
;
var
resolverOfXluaAssembly
=
xluaAssembly
.
MainModule
.
AssemblyResolver
as
BaseAssemblyResolver
;
if
(
injectAssembly
!=
xluaAssembly
)
{
resolverOfXluaAssembly
.
AddSearchDirectory
(
Path
.
GetDirectoryName
(
injectAssembly
.
MainModule
.
FullyQualifiedName
));
}
Action
<
string
>
addSearchDirectory
=
(
string
dir
)
=>
{
resolverOfInjectAssembly
.
AddSearchDirectory
(
dir
);
if
(
injectAssembly
!=
xluaAssembly
)
{
resolverOfXluaAssembly
.
AddSearchDirectory
(
dir
);
}
};
addSearchDirectory
(
"./Library/ScriptAssemblies/"
);
foreach
(
var
path
in
(
from
asm
in
AppDomain
.
CurrentDomain
.
GetAssemblies
()
select
asm
.
ManifestModule
.
FullyQualifiedName
)
.
Distinct
())
{
try
{
resolver
.
A
ddSearchDirectory
(
Path
.
GetDirectoryName
(
path
));
a
ddSearchDirectory
(
Path
.
GetDirectoryName
(
path
));
}
catch
(
Exception
)
{
...
...
@@ -306,9 +319,9 @@ namespace XLua
if
(
searchDirectorys
!=
null
)
{
foreach
(
var
directory
in
searchDirectorys
)
foreach
(
var
directory
in
searchDirectorys
.
Distinct
()
)
{
resolver
.
A
ddSearchDirectory
(
directory
);
a
ddSearchDirectory
(
directory
);
}
}
...
...
@@ -323,6 +336,25 @@ namespace XLua
}
}
static
string
getAssemblyFullName
(
IMetadataScope
scope
)
{
if
(
scope
==
null
)
return
null
;
switch
(
scope
.
MetadataScopeType
)
{
case
MetadataScopeType
.
ModuleDefinition
:
{
ModuleDefinition
md
=
scope
as
ModuleDefinition
;
return
md
.
Assembly
.
FullName
;
}
case
MetadataScopeType
.
AssemblyNameReference
:
{
AssemblyNameReference
anr
=
scope
as
AssemblyNameReference
;
return
anr
.
FullName
;
}
}
return
null
;
}
static
bool
isSameType
(
TypeReference
left
,
TypeReference
right
)
{
if
(
left
.
FullName
!=
right
.
FullName
)
...
...
@@ -337,8 +369,15 @@ namespace XLua
}
else
{
var
lafn
=
getAssemblyFullName
(
left
.
Scope
);
var
rafn
=
getAssemblyFullName
(
right
.
Scope
);
if
(
lafn
!=
null
&&
lafn
==
rafn
)
{
return
true
;
}
var
lr
=
left
.
Resolve
();
var
rr
=
right
.
Resolve
();
if
(
lr
==
null
||
rr
==
null
)
return
false
;
return
lr
.
Module
.
Assembly
.
FullName
==
rr
.
Module
.
Assembly
.
FullName
;
}
}
...
...
Tools/XLuaHotfixInject.exe
浏览文件 @
bbe07ea4
无法预览此类型文件
Tools/XLuaHotfixInject.pdb
浏览文件 @
bbe07ea4
无法预览此类型文件
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录