Использование Fody / Costura и Obfuscar в Visual Studio 2017

Я хотел бы спросить, можно ли использовать Fody-Costura, который встраивает зависимости в исполняемый файл и Obfuscar для обфускации вместе.

На данный момент я борюсь, потому что цель msbuild в Visual Studio 2017 Costura выполняется раньше, чем цель obfuscar (которая затем жалуется на отсутствие файлов зависимостей).

Поскольку obfuscar сам по себе не предоставляет цели, я использую MSBuild.Obfuscar.

Есть ли способ объединить эти два, возможно, указав порядок целей?


person TheGuy    schedule 18.02.2018    source источник
comment
У самого Obfuscar нет targets файла.   -  person Lex Li    schedule 19.02.2018
comment
Вы правы, я использую MSBuild.Obfuscar для получения цели.   -  person TheGuy    schedule 19.02.2018
comment
сделайте эту часть вопроса, пожалуйста. Не вводите людей в заблуждение.   -  person Lex Li    schedule 19.02.2018


Ответы (2)


Я быстро создал проект консольного приложения Framework и добавил Costura, MSBuild.Obfuscar и NLog. Чтобы заставить Obfuscar работать, все, что мне нужно было сделать, это отредактировать файл Obfuscar.xml, включив в него фактическое имя сборки:

<?xml version="1.0" encoding="utf-8"?>
<Obfuscator>
  <Var name="InPath" value="bin\Release" />
  <Var name="OutPath" value="$(InPath)\obfuscated" />
  <Var name="HidePrivateApi" value="true" />
  <!-- was: file="$(InPath)\"  -->
  <Module file="$(InPath)\ConsoleApp1.exe" />
</Obfuscator>

Это было прекрасно для меня. В полученной сборке мой код был обфусцирован, а также был включен NLog в качестве ресурса. Если вы видите разные результаты, возможно, это связано с другими конкретными пакетами NuGet, которые включает ваше решение.

person asherber    schedule 06.03.2018
comment
Я использую ту же конфигурацию, что и вы. Проблема возникает сразу после добавления MahApps.Metro, без него все работает нормально. Сейчас я попытаюсь найти решение для этого. Спасибо - person TheGuy; 07.03.2018
comment
Поскольку вы упомянули MahApps.Metro, я снова попытался использовать проект WPF с Costura, MSBuild.Obfuscar, NLog и MahApps.Metro. У меня тоже все построено нормально, без ошибок. - person asherber; 07.03.2018
comment
Вы только что добавили пакет или активно им пользуетесь? Потому что, когда я просто добавляю пакет, он работает как шарм, но как только я заменяю обычное окно окном метро, ​​оно перестает работать. - person TheGuy; 08.03.2018
comment
Я заменил главное окно окном метро в XAML и коде позади, но я не добавил никаких элементов управления или кода. Если есть какие-то конкретные шаги, которые я должен предпринять для воспроизведения, дайте мне знать. - person asherber; 08.03.2018
comment
Fody costura сжимает файлы dll, и он не запускается, если вы сохраните файл с помощью ILSpy и распакуйте с помощью github.com/G4224T/Fody-Costura-Decompress и снова посмотрите результат с помощью ILSpy, это файл не запутывается. Вы могли решить эту проблему? - person Juan Pablo; 10.07.2019

Мне удалось воспроизвести ошибку. Я использовал ответ от asherber, но как только я изменил сборку на выпуск, она перестала работать.
(«Невозможно разрешить зависимость: MahApps.Metro»)

Чтобы обеспечить успешную сборку даже при выпуске, мне пришлось скопировать указанный MahApps.Metro.dll в папку Release.
Если вы установили из NuGet, вы можете найти .dll в папке пакетов в папке вашего проекта. .

person Skelvir    schedule 14.03.2018