我正在将现有的 Xamarin 应用程序从 PCL 升级到 .NET Standard 2.0。 我有几个子项目,如业务、数据、BDO 等,它们是 PCL,我已经能够使用本教程将它们更新到 .NET Standard 2.0。
但是,我使用此 Xamarin 博客实现在所有 PCL 项目上实现了 Dotufscator,但它似乎不能作为 .NET Standard 2.0 项目的指令。DLL 未经过模糊处理,并且"正在运行的点处理器"消息不会显示在生成输出中。
我目前尝试将 Dotufcator 添加到 .NET Standard 2.0 proj 文件中,如下所示:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<DotfuscatorXamarinCliPath>C:Program Files (x86)Microsoft Visual Studio2017EnterpriseCommon7IDEExtensionsPreEmptiveSolutionsDotfuscatorCEdotfuscatorCLI.exe</DotfuscatorXamarinCliPath>
<DotfuscatorXamarinConfigFileName>DotfuscatorConfig.xml</DotfuscatorXamarinConfigFileName>
<DotfuscatorXamarinGenerateNewConfigFile>true</DotfuscatorXamarinGenerateNewConfigFile>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>binDebug</OutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DotfuscatorXamarinEnabled>true</DotfuscatorXamarinEnabled>
<OutputPath>binRelease</OutputPath>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
</ItemGroup>
<ItemGroup>
<None Include="DotfuscatorConfig.xml" />
</ItemGroup>
<Import Project="..PreEmptive.Dotfuscator.Xamarin.targets" />
</Project>
有人能帮忙吗? 谢谢
作为免责声明,我应该提到我正在回答这篇文章,这是我作为 Dotfuscator 团队的开发人员和技术作家工作的一部分。 我还写了你链接到的博客文章,所以我很高兴你发现它在保护你的 Xamarin 应用方面很有价值。
首先,博客文章中有一个模棱两可的地方,我应该澄清一下。 此处显示的 Dotfuscator-Xamarin MSBuild 集成仅用于集成到特定于平台的 Xamarin 项目中,这些项目构建为打包格式,例如构建 APK 的 Android 项目。 不支持直接集成到可移植类库 (PCL( 或 .NET 标准库等库项目中。
请注意,将 Dotfuscator 集成到 Xamarin 项目中将保护源自解决方案的所有打包程序集,因此库代码仍将受到保护。 例如,如果将 Dotfuscator 集成到引用A.csproj
、B.csproj
和C.csproj
的MyApp.Android.csproj
中,Dotfuscator 将在打包到 APK 中时保护所有四个项目的程序集。 这种方法允许更强的保护,并且不需要为每个库单独运行 Dotfuscator,从而节省构建和配置时间。
如果您使用的是商业许可的Dotfuscator 专业版,版本 4.37.0 包含新的 MSBuild 集成。 新的集成更易于设置,修复了一些已知问题,并且未来将是我们建议使用Dotfuscator的主要方式,用于所有类型的项目,而不仅仅是Xamarin。 我建议将 Dotfuscator 升级到此版本,并从 .NET Standard 项目中删除 Dotfuscator-Xamarin MSBuild 集成。 然后,将新的 MSBuild 集成添加到特定于平台的 Xamarin 项目中;有关详细信息,请参阅用户指南的 Xamarin 入门页面。
如果您使用的是Dotfuscator Community Edition(包含在所有 Visual Studio 版本中(或较旧的专业版,请继续使用博客文章中提到的 Dotfuscator-Xamarin MSBuild 集成。 我建议从 .NET 标准库中删除集成,而是将其添加到引用它们的特定于平台的 Xamarin 项目中。 请注意,当集成到引用 .NET 标准库的 Xamarin 项目中时,存在一个已知问题,即第一次生成将失败(因为集成不了解 .NET 标准使用的最小项目格式(;有关解决方法,请参阅此答案。 后续构建将正常进行,无需解决方法。