Xamarin.Forms中使用Dotfuscator代码混淆失败及构建错误求助
解决Xamarin + Dotfuscator构建时的"TargetName未找到方法"错误
看来你在给Xamarin项目配置Dotfuscator时踩了个MSBuild语法的小坑!这个错误的根源是项元数据引用语法错误:IntermediateSatelliteAssembliesWithTargetPath是MSBuild的项集合,它的元数据(比如TargetName、Culture)需要用%(...)语法引用,而不是用于全局属性的$(...)语法。
具体修复步骤:
- 定位到报错的Dotfuscator相关MSBuild文件(通常是
DotfuscatorXamarin.targets,具体路径取决于你的安装位置) - 找到你提到的第251行,原代码是:
<Destination>%(IntermediateSatelliteAssembliesWithTargetPath.Culture)\$(IntermediateSatelliteAssembliesWithTargetPath.TargetName).resources.dll</Destination>
- 将其中的
$(IntermediateSatelliteAssembliesWithTargetPath.TargetName)替换为%(IntermediateSatelliteAssembliesWithTargetPath.TargetName),修正后的代码如下:
<Destination>%(IntermediateSatelliteAssembliesWithTargetPath.Culture)\%(IntermediateSatelliteAssembliesWithTargetPath.TargetName).resources.dll</Destination>
后续验证操作:
- 保存修改后的文件,右键你的Xamarin项目选择清理,清除所有中间构建文件
- 重启Visual Studio(避免MSBuild缓存残留问题)
- 重新构建项目,此时这个"TargetName未找到方法"的错误应该会消失
如果问题仍然存在,可以检查Dotfuscator的版本是否与当前Xamarin SDK版本兼容,或者尝试重新安装Dotfuscator的Xamarin集成组件。
内容的提问来源于stack exchange,提问作者Amit Thakkar
相关产品推荐
相关产品推荐

