Я использую dotfuscator 4.12 для шифрования EXE и DLL в моем приложении!
Но после шифрования я запустил свое приложение, и оно было разбито с помощью следующего стека вызовов
Set connectionId threw an exception./n Stack Trace = at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
at DVRServerInterface.MainWindow.InitializeComponent()
at DVRServerInterface.MainWindow..ctor()
Мое приложение использует WPF, в нем 13 проектов, включая проекты C ++ и C #, все они используют .Net Framework 4.0. И я проверил все параметры шифрования при использовании dotfuscator.
Кто-то может помочь мне это исправить?
Большое спасибо,
T&T
Я сомневаюсь, что это вызвано Dotfuscator.
Убедитесь, что у вас есть все зависимости \ ссылки в нужном месте. Обычно, когда вы получаете исключение «Set connectionId выбросило исключение», у вас также появляется InnerException, который должен сообщать вам, какие ссылки отсутствуют.
Когда вы поймаете исключение, зарегистрируйте детали InnerException:
try
{
}
catch(Exception ex)
{
//ex.InnerException.Message and other exception details are accessible here, so just log them somewhere to see what's going on, but it can be null too so check for that first
}
Что ж, довольно часто приложение перестает работать должным образом после запутывания.
Если вы используете обфускатор, то вы хотите запутать как можно больше кода, но иногда вам придется отключить некоторые параметры в обфускаторе, к сожалению.
Обычно, когда наша команда сталкивается с такой проблемой, мы используем бинарный поиск, чтобы найти проблему)))
Мы отключаем половину флажков в инструменте обфускатора, а затем пытаемся запустить его и перехватить исключение на том же этапе в программе.
Этот процесс продолжается до тех пор, пока вы не поймете, какая опция для какого модуля вызывает эффект. Большую часть времени причиной такого поведения является обрезка или запутывание себя.