Здравствуйте, Luchnik, Вы писали:
L>Специально создавал простейшеe exe с одной формой. А если пытаемся загрузить winforms dll, то ошибки нет. L>Куда смотреть, чтобы с этим справится?
Здравствуйте, Shmj, Вы писали:
S>Здравствуйте, Luchnik, Вы писали:
L>>Специально создавал простейшеe exe с одной формой. А если пытаемся загрузить winforms dll, то ошибки нет. L>>Куда смотреть, чтобы с этим справится?
S>А зачем загружать?
Нужно будет создать потом экземпляры некоторых классов из exe. Через рефлексию.
Здравствуйте, Luchnik, Вы писали:
L>Специально создавал простейшеe exe с одной формой. А если пытаемся загрузить winforms dll, то ошибки нет. L>Куда смотреть, чтобы с этим справится?
You will need to make sure that the dependencies are also loaded into the app domain. If they aren't located automatically, you can subscribe to AppDomain.AssemblyResolve in order to find and load assemblies manually if needs be.
L>Специально создавал простейшеe exe с одной формой. А если пытаемся загрузить winforms dll, то ошибки нет. L>Куда смотреть, чтобы с этим справится?
какая версия дотнета? exe точно .net-вый? может ваш сервис по битности не совпадает с exe. запустите и посмотрите в диспетчере какая битность у процессов.
может у вас сервис на корке, а винформ на классике или наоборот?
CERudestaApp может действительно зависеть от кучи сборок, которые не нашел.
MD>You will need to make sure that the dependencies are also loaded into the app domain. If they aren't located automatically, you can subscribe to AppDomain.AssemblyResolve in order to find and load assemblies manually if needs be.
MD>Сам не пробовал, но выглядит логичным.
Да помнится через Reflection что то грузил из Win и не срабатывали какие то статические конструкторы уже непомню. Приходилось заранее их вызывать
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, vaa, Вы писали:
vaa>Здравствуйте, Luchnik, Вы писали:
L>>Специально создавал простейшеe exe с одной формой. А если пытаемся загрузить winforms dll, то ошибки нет. L>>Куда смотреть, чтобы с этим справится?
vaa>какая версия дотнета? exe точно .net-вый? может ваш сервис по битности не совпадает с exe. запустите и посмотрите в диспетчере какая битность у процессов. vaa>может у вас сервис на корке, а винформ на классике или наоборот?
Не, всюду простой 4 дотнет. И в сервисе, и в exe.
vaa>CERudestaApp может действительно зависеть от кучи сборок, которые не нашел.
Специально делал тестовый exe, простейший, с одной формой и без всяких дополнительных ссылок — тоже самое.
Здравствуйте, Luchnik, Вы писали:
L>Не, всюду простой 4 дотнет. И в сервисе, и в exe.
Ну тогда не тратьте время на эксперименты, а просто настройте логи в Fuslog и посмотрите, какую именно сборку он не может загрузить и почему.
Это почти 100% будет на порядок быстрее.
Здравствуйте, Михаил Романов, Вы писали:
МР>Здравствуйте, Luchnik, Вы писали:
L>>Не, всюду простой 4 дотнет. И в сервисе, и в exe. МР>Ну тогда не тратьте время на эксперименты, а просто настройте логи в Fuslog и посмотрите, какую именно сборку он не может загрузить и почему. МР>Это почти 100% будет на порядок быстрее.
The operation failed.
Bind result: hr = 0x8007000b. Была сделана попытка загрузить программу, имеющую неверный формат.
Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Running under executable C:\Projects\CE2006\ContourEnterpriseIV\WinService\CIVWinService\bin\Debug\CIVWinService.exe
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: DisplayName = CERudestaApp
(Partial)
WRN: Partial binding information was supplied for an assembly:
WRN: Assembly Name: CERudestaApp | 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.
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue.
LOG: Appbase = file:///C:/Projects/CE2006/ContourEnterpriseIV/WinService/CIVWinService/bin/Debug/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = CIVWinService.exe
Calling assembly : CECommon, Version=4.8.5.3389, Culture=neutral, PublicKeyToken=f5f4295dccc3a8ed.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Projects\CE2006\ContourEnterpriseIV\WinService\CIVWinService\bin\Debug\CIVWinService.exe.Config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Projects/CE2006/ContourEnterpriseIV/WinService/CIVWinService/bin/Debug/CERudestaApp.DLL.
LOG: Attempting download of new URL file:///C:/Projects/CE2006/ContourEnterpriseIV/WinService/CIVWinService/bin/Debug/CERudestaApp/CERudestaApp.DLL.
LOG: Attempting download of new URL file:///C:/Projects/CE2006/ContourEnterpriseIV/WinService/CIVWinService/bin/Debug/CERudestaApp.EXE.
LOG: Assembly download was successful. Attempting setup of file: C:\Projects\CE2006\ContourEnterpriseIV\WinService\CIVWinService\bin\Debug\CERudestaApp.exe
LOG: Entering run-from-source setup phase.
LOG: Assembly Name is: CERudestaApp, Version=4.8.5.922, Culture=neutral, PublicKeyToken=f5f4295dccc3a8ed
ERR: Invalid assembly platform or ContentType in file (hr = 0x8007000b).
ERR: Run-from-source setup phase failed with hr = 0x8007000b.
ERR: Failed to complete setup of assembly (hr = 0x8007000b). Probing terminated.
Здравствуйте, Luchnik, Вы писали:
L>Здравствуйте, Михаил Романов, Вы писали:
МР>>Здравствуйте, Luchnik, Вы писали:
L>>>Не, всюду простой 4 дотнет. И в сервисе, и в exe. МР>>Ну тогда не тратьте время на эксперименты, а просто настройте логи в Fuslog и посмотрите, какую именно сборку он не может загрузить и почему. МР>>Это почти 100% будет на порядок быстрее.
Понял из-за чего. Сервис был Any CPU, а exe — x86.
Здравствуйте, Luchnik, Вы писали:
L>System.Reflection.Assembly.Load(assemblyName); L>Если в качестве параметра передать exe c WinForms, то получаю ошибку: L>'Could not load file or assembly 'CERudestaApp' or one of its dependencies. Была сделана попытка загрузить программу, имеющую неверный формат.'
Ты бы версию дотнета то написал бы хотя бы.
Попробуй просто Process Explorer-ом посмотреть какие файлы там читаются (и обламываются).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.