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>
Другие вопросы по тегам