如何在 .NET Standard 2.0 项目上实施 Dotfuscator?
How can I implement Dotfuscator on a .NET Standard 2.0 project?
我正在将现有 Xamarin 应用程序从 PCL 升级到 .NET Standard 2.0。
我有几个子项目,例如业务、数据、BDO 等 PCL,我已经能够使用 this tutorial.
将它们更新到 .NET Standard 2.0
不过,我在所有 PCL 项目上都使用 this Xamarin Blog 实现了 Dotufscator,但它似乎不能作为 .NET Standard 2.0 项目的指令。 DLL 未被混淆,'Running Dotfuscator' 消息未显示在构建输出中。
我目前将 Dotufcator 添加到 .NET Standard 2.0 proj 文件的尝试如下:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<DotfuscatorXamarinCliPath>C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscatorCLI.exe</DotfuscatorXamarinCliPath>
<DotfuscatorXamarinConfigFileName>DotfuscatorConfig.xml</DotfuscatorXamarinConfigFileName>
<DotfuscatorXamarinGenerateNewConfigFile>true</DotfuscatorXamarinGenerateNewConfigFile>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DotfuscatorXamarinEnabled>true</DotfuscatorXamarinEnabled>
<OutputPath>bin\Release\</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 团队的开发人员和技术作家,我正在回答这个问题 post。
我还写了 the blog post you linked to,所以我很高兴你发现它在保护你的 Xamarin 应用程序方面很有价值。
首先,博客 post 中有一个歧义,我应该澄清一下。
此处显示的 Dotfuscator-Xamarin MSBuild 集成仅旨在集成到构建为打包格式的特定于平台的 Xamarin 项目中,例如构建 APK 的 Android 项目。
不支持直接集成到可移植 Class 库 (PCL) 或 .NET 标准库等库项目中。
请注意,将 Dotfuscator 集成到 Xamarin 项目中将保护源自您的解决方案的所有打包程序集,因此您的库代码仍将受到保护。
例如,如果将 Dotfuscator 集成到 MyApp.Android.csproj
中,它引用 A.csproj
、B.csproj
和 C.csproj
,Dotfuscator 将在打包到 APK 中时保护所有四个项目的程序集.
这种方法可以提供更强的保护,并且不需要您为每个库分别 运行 Dotfuscator,从而节省构建和配置时间。
如果您使用的是商业许可的 Dotfuscator Professional Edition,版本 4.37.0 包括 a new MSBuild integration。
新的集成更易于设置,修复了一些已知问题,未来将是我们推荐使用 Dotfuscator 的主要方式,适用于各种项目,而不仅仅是 Xamarin。
我建议将 Dotfuscator 升级到此版本并从 .NET Standard 项目中删除 Dotfuscator-Xamarin MSBuild 集成。
然后,将新的 MSBuild 集成添加到特定于平台的 Xamarin 项目中;有关详细信息,请参阅我们的用户指南的 Xamarin Getting Started page。
如果您使用的是 Dotfuscator Community Edition(包含在所有 Visual Studio 版本中)或更早的专业版,请继续使用 the Dotfuscator-Xamarin MSBuild integration博客 post。
我建议您从 .NET 标准库中删除集成,而是将其添加到引用它们的特定于平台的 Xamarin 项目中。
请注意,当集成到引用 .NET Standard 库的 Xamarin 项目时,存在一个已知问题,即第一次构建将失败(因为集成不理解 .NET Standard 使用的最小项目格式);请参阅 了解解决方法。
后续构建将正常进行,无需解决方法。
我正在将现有 Xamarin 应用程序从 PCL 升级到 .NET Standard 2.0。 我有几个子项目,例如业务、数据、BDO 等 PCL,我已经能够使用 this tutorial.
将它们更新到 .NET Standard 2.0不过,我在所有 PCL 项目上都使用 this Xamarin Blog 实现了 Dotufscator,但它似乎不能作为 .NET Standard 2.0 项目的指令。 DLL 未被混淆,'Running Dotfuscator' 消息未显示在构建输出中。
我目前将 Dotufcator 添加到 .NET Standard 2.0 proj 文件的尝试如下:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<DotfuscatorXamarinCliPath>C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscatorCLI.exe</DotfuscatorXamarinCliPath>
<DotfuscatorXamarinConfigFileName>DotfuscatorConfig.xml</DotfuscatorXamarinConfigFileName>
<DotfuscatorXamarinGenerateNewConfigFile>true</DotfuscatorXamarinGenerateNewConfigFile>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DotfuscatorXamarinEnabled>true</DotfuscatorXamarinEnabled>
<OutputPath>bin\Release\</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 团队的开发人员和技术作家,我正在回答这个问题 post。 我还写了 the blog post you linked to,所以我很高兴你发现它在保护你的 Xamarin 应用程序方面很有价值。
首先,博客 post 中有一个歧义,我应该澄清一下。 此处显示的 Dotfuscator-Xamarin MSBuild 集成仅旨在集成到构建为打包格式的特定于平台的 Xamarin 项目中,例如构建 APK 的 Android 项目。 不支持直接集成到可移植 Class 库 (PCL) 或 .NET 标准库等库项目中。
请注意,将 Dotfuscator 集成到 Xamarin 项目中将保护源自您的解决方案的所有打包程序集,因此您的库代码仍将受到保护。
例如,如果将 Dotfuscator 集成到 MyApp.Android.csproj
中,它引用 A.csproj
、B.csproj
和 C.csproj
,Dotfuscator 将在打包到 APK 中时保护所有四个项目的程序集.
这种方法可以提供更强的保护,并且不需要您为每个库分别 运行 Dotfuscator,从而节省构建和配置时间。
如果您使用的是商业许可的 Dotfuscator Professional Edition,版本 4.37.0 包括 a new MSBuild integration。 新的集成更易于设置,修复了一些已知问题,未来将是我们推荐使用 Dotfuscator 的主要方式,适用于各种项目,而不仅仅是 Xamarin。 我建议将 Dotfuscator 升级到此版本并从 .NET Standard 项目中删除 Dotfuscator-Xamarin MSBuild 集成。 然后,将新的 MSBuild 集成添加到特定于平台的 Xamarin 项目中;有关详细信息,请参阅我们的用户指南的 Xamarin Getting Started page。
如果您使用的是 Dotfuscator Community Edition(包含在所有 Visual Studio 版本中)或更早的专业版,请继续使用 the Dotfuscator-Xamarin MSBuild integration博客 post。
我建议您从 .NET 标准库中删除集成,而是将其添加到引用它们的特定于平台的 Xamarin 项目中。
请注意,当集成到引用 .NET Standard 库的 Xamarin 项目时,存在一个已知问题,即第一次构建将失败(因为集成不理解 .NET Standard 使用的最小项目格式);请参阅