2016-01-26 3 views
0

У меня есть несколько сборок, которые сливаются в один. Вот моя команда.FileNotFoundException при загрузке ILMerged asseblies

ilmerge /lib:. /keyfile:../../key.snk /targetplatform:v4 /out:..\..\build\Dynamicalabs.QbIntegration.Plugins.dll .\DynamicaLabs.QbIntegration.Plugins.dll .\Intuit.Ipp.Core.dll .\Intuit.Ipp.Data.dll .\Intuit.Ipp.DataService.dll .\Intuit.Ipp.Exception.dll .\Intuit.Ipp.Security.dll .\Intuit.Ipp.Utility.dll .\Intuit.Ipp.Diagnostics.dll .\Intuit.Ipp.Retry.dll .\Newtonsoft.Json.dll .\DevDefined.OAuth.dll .\DNL.QBIntegration.dll 

Проблема с. \ Intuit.Ipp.Data.dll сборка. Это имя. \ Intuit.Ipp.Data.dll, но в свойствах файла Intuit.IPP.Data.dll (столичный IPP). Другие сборки загружены правильно и не имеют такой информации в описании. Может ли это вызвать эту ошибку? И как я это редактирую? Сообщение об исключении:

System.IO.FileNotFoundException: Could not load file or assembly 'Intuit.Ipp.Data' or one of its dependencies. The system cannot find the file specified. 

=== Pre-bind state information === LOG: DisplayName = Intuit.Ipp.Data (Partial) WRN: Partial binding information was supplied for an assembly: WRN: Assembly Name: Intuit.Ipp.Data | Domain ID: 1 WRN: A partial bind occurs when only part of the assembly display name is provided. WRN: This might result in the binder loading an incorrect assembly. WRN: It is recommended to provide a fully specified textual identity for the assembly, WRN: that consists of the simple name, version, culture, and public key token. Newtonsoft.Json не загружается слишком. Другие сборки - ок.

ответ

1

Тип исключения System.IO.FileNotFoundException предполагает, что проблема с загрузкой происходит в клиентском коде. Существует строка, которая явно загружает эту DLL, например, Assembly.LoadFile. В этом случае у вас могут возникнуть проблемы после слияния, потому что больше нет отдельной сборки Ipp.Data.

Решение 1: Не сливать Ipp.Data сборки

Решение 2: Найти строку, которая вызывает проблемы - например, нажмите «Отладка» при сбое приложения или присоедините к процессу - затем перед слиянием перекомпилируйте сборку, которая загружает имя сборки Ipp.Data. Это можно сделать, используя утилиты ildasm и ilasm. Учебное пособие здесь - http://www.power-programming.co.uk/post/2009/09/23/Using-ildasm-and-ilasm-to-modify-a-NET-assembly.aspx

Смежные вопросы