The Wayback Machine - https://web.archive.org/web/20201014224552/https://github.com/Tencent/xLua/issues/752
Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HotfixInject不能热更新C#代码 #752

Open
wumohai opened this issue Jun 2, 2020 · 20 comments
Open

HotfixInject不能热更新C#代码 #752

wumohai opened this issue Jun 2, 2020 · 20 comments

Comments

@wumohai
Copy link

@wumohai wumohai commented Jun 2, 2020

在BuildPipeline.BuildPlayer 的前一步调用了Hotfix.HotfixInject();日志也显示Inject成功了。但是打出来的包就是不能更新C#代码。在编辑器上测试就没有问题。

@wumohai
Copy link
Author

@wumohai wumohai commented Jun 2, 2020

Android, Unity 2018.4.23f1的版本。

@chexiongsheng
Copy link
Collaborator

@chexiongsheng chexiongsheng commented Jun 2, 2020

可能是注入后又触发了重新编译吧

@wumohai
Copy link
Author

@wumohai wumohai commented Jun 3, 2020

开始BuildPipeline.BuildPlayer之后还会再触发编译么?

@CallMeCensor
Copy link

@CallMeCensor CallMeCensor commented Jun 3, 2020

我也遇到了这个问题,inject成功后打出来的安卓包和pc包里Assembly-CSharp.dll都没有注入信息,不能热更。编辑器模式可以热更。unity版本是2019.3.3f1.

@zhk450861222
Copy link

@zhk450861222 zhk450861222 commented Jun 16, 2020

我也是这样问题, 有兄弟找到原因没。要怎么解决。版本是2019.2.21f1

@chexiongsheng
Copy link
Collaborator

@chexiongsheng chexiongsheng commented Jun 19, 2020

我也是这样问题, 有兄弟找到原因没。要怎么解决。版本是2019.2.21f1

更新到master版本

@zhk450861222
Copy link

@zhk450861222 zhk450861222 commented Jun 19, 2020

我也是这样问题, 有兄弟找到原因没。要怎么解决。版本是2019.2.21f1

更新到master版本

ok 解决了

@GameRisker
Copy link

@GameRisker GameRisker commented Jun 30, 2020

@chexiongsheng 遇到相同的问题,已经使用2.1.15 , 版本:Unity 2019.4.0f1 LTS

@GameRisker
Copy link

@GameRisker GameRisker commented Jun 30, 2020

@chexiongsheng 遇到相同的问题,已经使用2.1.15 , 版本:Unity 2019.4.0f1 LTS

应该是新版本打包机制有所修改
我把路径强制指向新版本路径,Hotfix就好了。
暂时能解决,还望尽快更新掉这个问题。

var injectAssemblyPaths = HotfixConfig.GetHotfixAssemblyPaths();
injectAssemblyPaths[i] = @"E:/WorkSpace/Code/Client/Temp/StagingArea/Data/Managed/Assembly-CSharp.dll";
@chexiongsheng
Copy link
Collaborator

@chexiongsheng chexiongsheng commented Jul 1, 2020

@chexiongsheng 遇到相同的问题,已经使用2.1.15 , 版本:Unity 2019.4.0f1 LTS

应该是新版本打包机制有所修改
我把路径强制指向新版本路径,Hotfix就好了。
暂时能解决,还望尽快更新掉这个问题。

var injectAssemblyPaths = HotfixConfig.GetHotfixAssemblyPaths();
injectAssemblyPaths[i] = @"E:/WorkSpace/Code/Client/Temp/StagingArea/Data/Managed/Assembly-CSharp.dll";

可能和我漏提交东西有关,我已经更新了下载包,你重新下载看看

@GameRisker
Copy link

@GameRisker GameRisker commented Jul 1, 2020

@chexiongsheng 遇到相同的问题,已经使用2.1.15 , 版本:Unity 2019.4.0f1 LTS

应该是新版本打包机制有所修改
我把路径强制指向新版本路径,Hotfix就好了。
暂时能解决,还望尽快更新掉这个问题。

var injectAssemblyPaths = HotfixConfig.GetHotfixAssemblyPaths();
injectAssemblyPaths[i] = @"E:/WorkSpace/Code/Client/Temp/StagingArea/Data/Managed/Assembly-CSharp.dll";

可能和我漏提交东西有关,我已经更新了下载包,你重新下载看看

谢谢,更新后已修复

@dhr0118
Copy link

@dhr0118 dhr0118 commented Aug 4, 2020

@chexiongsheng 我还是遇到这样的问题,在编辑器模式可以热更,但是打包PC版本出来后就没有作用
已经使用master_v2.1.15 , 版本:Unity 2020.1.0f1c1 和 Unity 2019.3.3f1,

@chexiongsheng
Copy link
Collaborator

@chexiongsheng chexiongsheng commented Aug 4, 2020

@chexiongsheng 我还是遇到这样的问题,在编辑器模式可以热更,但是打包PC版本出来后就没有作用
已经使用master_v2.1.15 , 版本:Unity 2020.1.0f1c1 和 Unity 2019.3.3f1,

同样的现象,不一定是同样的问题。这个issues提到的bug已经被解决而且也被验证。你还注入不成功,应该是其它原因导致的,比如操作步骤有误,打包脚本在注入后触发了重新编译等等。

@dhr0118
Copy link

@dhr0118 dhr0118 commented Aug 4, 2020

@chexiongsheng 我还是遇到这样的问题,在编辑器模式可以热更,但是打包PC版本出来后就没有作用
已经使用master_v2.1.15 , 版本:Unity 2020.1.0f1c1 和 Unity 2019.3.3f1,

同样的现象,不一定是同样的问题。这个issues提到的bug已经被解决而且也被验证。你还注入不成功,应该是其它原因导致的,比如操作步骤有误,打包脚本在注入后触发了重新编译等等。

    大大,我从头测试到打包完成尝试了很多遍,最后仔细看打包完成后Debug出来的inject路径,并非我打包的路径,而仍然是我原project的路径下的\Library\ScriptAssemblies\Assembly-CSharp.dll,我将这个.dll替代了我打包路径下的\Data\Managed\Assembly-CSharp.dll,发现这样才可以正常热更新了。。
    请问大大,这是因为我一些操作步骤才会出现的吗?还是一些我其他配置上的问题? 感谢
@chexiongsheng
Copy link
Collaborator

@chexiongsheng chexiongsheng commented Aug 6, 2020

@chexiongsheng 我还是遇到这样的问题,在编辑器模式可以热更,但是打包PC版本出来后就没有作用
已经使用master_v2.1.15 , 版本:Unity 2020.1.0f1c1 和 Unity 2019.3.3f1,

同样的现象,不一定是同样的问题。这个issues提到的bug已经被解决而且也被验证。你还注入不成功,应该是其它原因导致的,比如操作步骤有误,打包脚本在注入后触发了重新编译等等。

    大大,我从头测试到打包完成尝试了很多遍,最后仔细看打包完成后Debug出来的inject路径,并非我打包的路径,而仍然是我原project的路径下的\Library\ScriptAssemblies\Assembly-CSharp.dll,我将这个.dll替代了我打包路径下的\Data\Managed\Assembly-CSharp.dll,发现这样才可以正常热更新了。。
    请问大大,这是因为我一些操作步骤才会出现的吗?还是一些我其他配置上的问题? 感谢

你打包的过程,是否有“hotfix inject finish!”或者“had injected!”的打印呢?没有的话就是没触发注入。文档:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/hotfix.md

@dhr0118
Copy link

@dhr0118 dhr0118 commented Aug 6, 2020

@chexiongsheng 我还是遇到这样的问题,在编辑器模式可以热更,但是打包PC版本出来后就没有作用
已经使用master_v2.1.15 , 版本:Unity 2020.1.0f1c1 和 Unity 2019.3.3f1,

同样的现象,不一定是同样的问题。这个issues提到的bug已经被解决而且也被验证。你还注入不成功,应该是其它原因导致的,比如操作步骤有误,打包脚本在注入后触发了重新编译等等。

    大大,我从头测试到打包完成尝试了很多遍,最后仔细看打包完成后Debug出来的inject路径,并非我打包的路径,而仍然是我原project的路径下的\Library\ScriptAssemblies\Assembly-CSharp.dll,我将这个.dll替代了我打包路径下的\Data\Managed\Assembly-CSharp.dll,发现这样才可以正常热更新了。。
    请问大大,这是因为我一些操作步骤才会出现的吗?还是一些我其他配置上的问题? 感谢

你打包的过程,是否有“hotfix inject finish!”或者“had injected!”的打印呢?没有的话就是没触发注入。文档:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/hotfix.md

您好,大大。我确认了这是在build之后输出
D:\unity project\xluatest\Library\ScriptAssemblies\Assembly-CSharp.dll had injected!
Build completed with a result of 'Succeeded'
但是这个注入的路径并非我打包选择的路径,而是我原工程的路径,与我在编辑器模式下手动XLua->Hotfix inject in Editor的路径一致。我需要重新替换打包后文件中的Assembly-CSharp.dll之后才能正常热更。但是上面几位前辈都解决了这个问题,我想可能是我自己电脑上的一些问题,不过以后遇到这种问题,就算手动替换一下,也是很快的。
谢谢大大!

@chexiongsheng
Copy link
Collaborator

@chexiongsheng chexiongsheng commented Aug 6, 2020

@chexiongsheng 我还是遇到这样的问题,在编辑器模式可以热更,但是打包PC版本出来后就没有作用
已经使用master_v2.1.15 , 版本:Unity 2020.1.0f1c1 和 Unity 2019.3.3f1,

同样的现象,不一定是同样的问题。这个issues提到的bug已经被解决而且也被验证。你还注入不成功,应该是其它原因导致的,比如操作步骤有误,打包脚本在注入后触发了重新编译等等。

    大大,我从头测试到打包完成尝试了很多遍,最后仔细看打包完成后Debug出来的inject路径,并非我打包的路径,而仍然是我原project的路径下的\Library\ScriptAssemblies\Assembly-CSharp.dll,我将这个.dll替代了我打包路径下的\Data\Managed\Assembly-CSharp.dll,发现这样才可以正常热更新了。。
    请问大大,这是因为我一些操作步骤才会出现的吗?还是一些我其他配置上的问题? 感谢

你打包的过程,是否有“hotfix inject finish!”或者“had injected!”的打印呢?没有的话就是没触发注入。文档:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/hotfix.md

您好,大大。我确认了这是在build之后输出
D:\unity project\xluatest\Library\ScriptAssemblies\Assembly-CSharp.dll had injected!
Build completed with a result of 'Succeeded'
但是这个注入的路径并非我打包选择的路径,而是我原工程的路径,与我在编辑器模式下手动XLua->Hotfix inject in Editor的路径一致。我需要重新替换打包后文件中的Assembly-CSharp.dll之后才能正常热更。但是上面几位前辈都解决了这个问题,我想可能是我自己电脑上的一些问题,不过以后遇到这种问题,就算手动替换一下,也是很快的。
谢谢大大!

你是不是下载错版本了?你下载的是release里头的source code?那个是有问题的

@dhr0118
Copy link

@dhr0118 dhr0118 commented Aug 6, 2020

@chexiongsheng 我还是遇到这样的问题,在编辑器模式可以热更,但是打包PC版本出来后就没有作用
已经使用master_v2.1.15 , 版本:Unity 2020.1.0f1c1 和 Unity 2019.3.3f1,

同样的现象,不一定是同样的问题。这个issues提到的bug已经被解决而且也被验证。你还注入不成功,应该是其它原因导致的,比如操作步骤有误,打包脚本在注入后触发了重新编译等等。

    大大,我从头测试到打包完成尝试了很多遍,最后仔细看打包完成后Debug出来的inject路径,并非我打包的路径,而仍然是我原project的路径下的\Library\ScriptAssemblies\Assembly-CSharp.dll,我将这个.dll替代了我打包路径下的\Data\Managed\Assembly-CSharp.dll,发现这样才可以正常热更新了。。
    请问大大,这是因为我一些操作步骤才会出现的吗?还是一些我其他配置上的问题? 感谢

你打包的过程,是否有“hotfix inject finish!”或者“had injected!”的打印呢?没有的话就是没触发注入。文档:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/hotfix.md

您好,大大。我确认了这是在build之后输出
D:\unity project\xluatest\Library\ScriptAssemblies\Assembly-CSharp.dll had injected!
Build completed with a result of 'Succeeded'
但是这个注入的路径并非我打包选择的路径,而是我原工程的路径,与我在编辑器模式下手动XLua->Hotfix inject in Editor的路径一致。我需要重新替换打包后文件中的Assembly-CSharp.dll之后才能正常热更。但是上面几位前辈都解决了这个问题,我想可能是我自己电脑上的一些问题,不过以后遇到这种问题,就算手动替换一下,也是很快的。
谢谢大大!

你是不是下载错版本了?你下载的是release里头的source code?那个是有问题的

我是直接在首页下的,下的是xLua-master

@chexiongsheng
Copy link
Collaborator

@chexiongsheng chexiongsheng commented Aug 6, 2020

@chexiongsheng 我还是遇到这样的问题,在编辑器模式可以热更,但是打包PC版本出来后就没有作用
已经使用master_v2.1.15 , 版本:Unity 2020.1.0f1c1 和 Unity 2019.3.3f1,

同样的现象,不一定是同样的问题。这个issues提到的bug已经被解决而且也被验证。你还注入不成功,应该是其它原因导致的,比如操作步骤有误,打包脚本在注入后触发了重新编译等等。

    大大,我从头测试到打包完成尝试了很多遍,最后仔细看打包完成后Debug出来的inject路径,并非我打包的路径,而仍然是我原project的路径下的\Library\ScriptAssemblies\Assembly-CSharp.dll,我将这个.dll替代了我打包路径下的\Data\Managed\Assembly-CSharp.dll,发现这样才可以正常热更新了。。
    请问大大,这是因为我一些操作步骤才会出现的吗?还是一些我其他配置上的问题? 感谢

你打包的过程,是否有“hotfix inject finish!”或者“had injected!”的打印呢?没有的话就是没触发注入。文档:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/hotfix.md

您好,大大。我确认了这是在build之后输出
D:\unity project\xluatest\Library\ScriptAssemblies\Assembly-CSharp.dll had injected!
Build completed with a result of 'Succeeded'
但是这个注入的路径并非我打包选择的路径,而是我原工程的路径,与我在编辑器模式下手动XLua->Hotfix inject in Editor的路径一致。我需要重新替换打包后文件中的Assembly-CSharp.dll之后才能正常热更。但是上面几位前辈都解决了这个问题,我想可能是我自己电脑上的一些问题,不过以后遇到这种问题,就算手动替换一下,也是很快的。
谢谢大大!

你是不是下载错版本了?你下载的是release里头的source code?那个是有问题的

我是直接在首页下的,下的是xLua-master

太早下了么,刚发2.1.15的时候,master是有问题的,你现在重新下载看看

@dhr0118
Copy link

@dhr0118 dhr0118 commented Aug 6, 2020

@chexiongsheng 我还是遇到这样的问题,在编辑器模式可以热更,但是打包PC版本出来后就没有作用
已经使用master_v2.1.15 , 版本:Unity 2020.1.0f1c1 和 Unity 2019.3.3f1,

同样的现象,不一定是同样的问题。这个issues提到的bug已经被解决而且也被验证。你还注入不成功,应该是其它原因导致的,比如操作步骤有误,打包脚本在注入后触发了重新编译等等。

    大大,我从头测试到打包完成尝试了很多遍,最后仔细看打包完成后Debug出来的inject路径,并非我打包的路径,而仍然是我原project的路径下的\Library\ScriptAssemblies\Assembly-CSharp.dll,我将这个.dll替代了我打包路径下的\Data\Managed\Assembly-CSharp.dll,发现这样才可以正常热更新了。。
    请问大大,这是因为我一些操作步骤才会出现的吗?还是一些我其他配置上的问题? 感谢

你打包的过程,是否有“hotfix inject finish!”或者“had injected!”的打印呢?没有的话就是没触发注入。文档:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/hotfix.md

您好,大大。我确认了这是在build之后输出
D:\unity project\xluatest\Library\ScriptAssemblies\Assembly-CSharp.dll had injected!
Build completed with a result of 'Succeeded'
但是这个注入的路径并非我打包选择的路径,而是我原工程的路径,与我在编辑器模式下手动XLua->Hotfix inject in Editor的路径一致。我需要重新替换打包后文件中的Assembly-CSharp.dll之后才能正常热更。但是上面几位前辈都解决了这个问题,我想可能是我自己电脑上的一些问题,不过以后遇到这种问题,就算手动替换一下,也是很快的。
谢谢大大!

你是不是下载错版本了?你下载的是release里头的source code?那个是有问题的

我是直接在首页下的,下的是xLua-master

太早下了么,刚发2.1.15的时候,master是有问题的,你现在重新下载看看

已重下,新建了新工程,但结果还是一样,build后打印的inject路径并没有跟随到我打包的路径,还是到原工程的路径

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
6 participants
You can’t perform that action at this time.