Virtuosity.Fody在Unity项目中未完成织入的问题求助
Unity中Virtuosity.Fody未执行织入的排查与修复
检查FodyWeavers.xml配置
项目根目录必须有FodyWeavers.xml文件,内容要包含Virtuosity节点:<Weavers> <Virtuosity /> </Weavers>还要把这个文件的属性设为始终复制到输出目录,不然编译时Fody找不到配置,直接跳过织入。
确认Unity编译后端兼容性
Virtuosity对IL2CPP支持有限,先切换到Mono编译后端试试。另外检查对应程序集的csproj文件,确认已经正确引入NuGet包:<PackageReference Include="Fody" Version="对应版本号" PrivateAssets="all" /> <PackageReference Include="Virtuosity.Fody" Version="对应版本号" PrivateAssets="all" />单元测试项目单独配置
要是单元测试是独立的程序集,得单独给这个测试项目安装Virtuosity.Fody并配置FodyWeavers.xml——织入是按单个程序集生效的,主项目的配置不会自动同步到测试项目。查看编译日志找问题
开启Unity的详细编译日志(路径:Edit > Project Settings > Player > Other Settings > Enable Detailed Build Reporting),编译完搜Fody或Virtuosity关键词,看有没有织入失败的报错,比如程序集被其他工具提前处理、权限不够之类的。做最小场景测试验证
写个极简的测试脚本验证织入是否生效:public class TestClass { public void NonVirtualMethod() {} } [Test] public void TestMethodOverride() { var mock = new Mock<TestClass>(); mock.Setup(x => x.NonVirtualMethod()).Verifiable(); mock.Object.NonVirtualMethod(); mock.Verify(); }织入正常的话这个测试能通过,要是失败就说明织入流程根本没跑,得重新检查NuGet安装和配置。
内容的提问来源于stack exchange,提问作者AX2
相关产品推荐
相关产品推荐

