MakeSfxCA.exe и DLL, скомпилированные с Framework 4.0
У меня есть DLL-файл, скомпилированный с Microsoft .NET Framework 4.0
Когда я использую файл MakeSfxCA.exe и передаю dll в качестве одного из параметров в командную строку, появляется следующее сообщение об ошибке:
D: \ SetupManager \ test> D: \ SetupManager \ SetupBuilding \ Wix \ bin \ sdk \ makefxca.exe Fil e2.dll D:\SetupManager\SetupBuilding\Wix\bin\sdk\x86\sfxCA.dll File1.dll CustomA ction.config Поиск точек входа настраиваемых действий в File1.dll Ошибка: System.BadImageFormatException: Не удалось загрузить файл или сборку 'file:/// D:\SetupManager\test\File1.dll' или одну из ее зависимостей. ** Эта сборка создается средой выполнения, более новой, чем текущая загруженная среда, и не может быть загружена. ** Имя файла: 'file:///D:\SetupManager\test\File1.dll' в System.Reflection.Assembly._nLoad(имя_файла_сборки, строковое codeBase, доказательство сборки.Безопасности, расположение сборки, подсказка, StackCrawlMark & stackMark, упрощенное значение throwOnFileNotFound, логическое значение forIntrospection) в System.Reflection.Assembly.nLoad(имя_файла_имя_файла AssemblyName, расположение String codeBlashSecurity, Staction codeMackSecurity, Staction codeMase, Stack codeMliceSecurity, Staction codeMase, Stack codeMaseCeck, VC) Например, throwOnFileNotFound, Boolean forIntrospection) в System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Свидетельство assemblySecurity, StackCrawlMark& stackMark, логическое значение forIntrospection) в System.Reflection.Assembly.InternalLoadFhashHehhh ЛЯ EHEHEHTINGHINGEHTING Логическое значение forIntrospection, StackCrawlMark& stackMark) в System.Reflection.Assembly.ReflectionOnlyLoadFrom(String assemblyFile) в Microsoft.Deployment.Tools.MakeSfxCA.MakeSfxCA.FindEntryPoints(строковый модуль) в Microsoft.Deployment.Tools.MakeSfxCA.MakeSfxCA.Build(строковый вывод, String sfxdll, входные данные IList`1, журнал TextWriter) в Microsoft.Deployment.o.MakeSfxCA.MakeSfxCA.Main(String[] args) === Информация о состоянии предварительной привязки === LOG: Пользователь = DSDMAIN\Rajesh LOG: привязка Where-ref. Расположение = D:\SetupManager\test\File1.dll LOG: База приложения = файл:///D:/SetupManager/SetupBuilding/Wix/bin/sdk/ LOG: Initial PrivatePath = NULL Вызывающая сборка: (неизвестно). === Журнал: это проверка только привязка. LOG: файл конфигурации приложения не найден. LOG: использование файла конфигурации компьютера из C:\Windows\Microsoft.NET\Framework\v2 .0.50727\config\machine.config. LOG: Попытка загрузки нового файла URL:///D:/SetupManager/test/File1.dll. ERR: не удалось завершить настройку сборки (hr = 0x8013101b). Зондирование прекращено.
Любая помощь приветствуется.
Заранее спасибо.
2 ответа
Моя проблема была немного другой, но это может быть полезно для других людей. .config
файл должен иметь названиеCustomAction.config
"в вашем проекте. У него не может быть названия <YourCAProject>.config
как это произойдет, когда вы переименуете проект, чтобы дать dll уникальное имя. Кажется MakeSfxCA
инструмент для сборки и SfxCA
заглушка зависит от этого имени файла на данный момент.
Я получил похожую проблему, добавив следующий код в файл CustomActions.config и создав файл MakeSfxCA.exe.config рядом с файлом MakeSfxCA.exe.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
</startup>
</configuration>