Сегодня я вас научу защищать свое интелектуальное право Начнем с нужных нам вещей для этого: 1. Прямые рученки (куда-же без них) 2. ConfuserEx от mkaring (клик) Первый этап - Подготовка ConfuserEx Для правильной работы нам нужно установить его в PATH вашей системы Если же вы умеете это делать, то рекомендую использовать папку Program Files Как установить папку в PATH на Windows 10 Чтобы добавить ее в Path нужно открыть настройки и зайти в вкладку Система(System) (В данном случае показываю на Windows 10, если у вас не такая версия Windows то погуглите как добавить папку в PATH на Windows N) Далее в Информацию(About) И дополнительные настройки Далее на самую нижнюю кнопку Далее зависит от вас, если хотите добавить для всех на этом компьютере, то выберайте с нижнем Path и нажимайте Edit, Нам же это не надо и мы выбераем сверху и опять же нажимаем Изменить Нажимаем Добавить И вводим путь до нашей папки с Confuser.CLI.exe файлом Сохраняем и выходим Для проверки откройте консоль и введите "confuser.cli", если консоль показала, что такой команды не существует, тогда вы сделали что-то не правильно. Верным решением будет перезагрузка компьютера, тогда все программы подхватят изменение. Второй этап - Настройка .csproj Заходим в наш проектный файл и вставляем это <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net5.0</TargetFramework> <PublishSingleFile Condition="$(Configuration) == 'Release'">true</PublishSingleFile> <IncludeAllContentForSelfExtract Condition="$(Configuration) == 'Release'">true</IncludeAllContentForSelfExtract> <ConfuserSettings> <project outputDir="." baseDir="." xmlns="https://raw.githubusercontent.com/mkaring/ConfuserEx/master/Confuser.Core/Project/ConfuserPrj.xsd"> <rule pattern="true" preset="maximum"> <protection id="ref proxy" action="remove"/> </rule> <module path=".\$(AssemblyName).dll"/> </project> </ConfuserSettings> </PropertyGroup> <Target Name="ObfuscateAssembly" AfterTargets="PostBuildEvent" Outputs="$(AssemblyName).dll" Condition="$(Configuration) == 'Release'"> <!-- Write configuration file to the project dir for CLI to use it --> <WriteLinesToFile File="$(OutDir)\$(RootNamespace).crproj" Overwrite="true" Lines="$(ConfuserSettings)"/> <!-- Obfuscate assembly in /bin/ folder because /obj/ folder doesn't have dependencies --> <Exec Command="Confuser.CLI "$(OutDir)\$(RootNamespace).crproj""/> <!-- Move obfuscated to /obj/ folder, so single file host will pick it up and use it --> <Move SourceFiles="$(OutDir)\$(AssemblyName).dll" DestinationFiles="$(ProjectDir)\obj\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\$(AssemblyName).dll" OverwriteReadOnlyFiles="true"/> </Target> Code <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net5.0</TargetFramework> <PublishSingleFile Condition="$(Configuration) == 'Release'">true</PublishSingleFile> <IncludeAllContentForSelfExtract Condition="$(Configuration) == 'Release'">true</IncludeAllContentForSelfExtract> <ConfuserSettings> <project outputDir="." baseDir="." xmlns="https://raw.githubusercontent.com/mkaring/ConfuserEx/master/Confuser.Core/Project/ConfuserPrj.xsd"> <rule pattern="true" preset="maximum"> <protection id="ref proxy" action="remove"/> </rule> <module path=".\$(AssemblyName).dll"/> </project> </ConfuserSettings> </PropertyGroup> <Target Name="ObfuscateAssembly" AfterTargets="PostBuildEvent" Outputs="$(AssemblyName).dll" Condition="$(Configuration) == 'Release'"> <!-- Write configuration file to the project dir for CLI to use it --> <WriteLinesToFile File="$(OutDir)\$(RootNamespace).crproj" Overwrite="true" Lines="$(ConfuserSettings)"/> <!-- Obfuscate assembly in /bin/ folder because /obj/ folder doesn't have dependencies --> <Exec Command="Confuser.CLI "$(OutDir)\$(RootNamespace).crproj""/> <!-- Move obfuscated to /obj/ folder, so single file host will pick it up and use it --> <Move SourceFiles="$(OutDir)\$(AssemblyName).dll" DestinationFiles="$(ProjectDir)\obj\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\$(AssemblyName).dll" OverwriteReadOnlyFiles="true"/> </Target> В отличие от первого способа где нужно было создавать файл, тут нам не нужно ничего кроме подготовленного обфускатора