Пользовательское действие в C #, используемое через WiX, завершается с ошибкой 1154

Я использую WiX 3.5.1930 в Visual Studio 2010, ориентируясь на .NET Framework 3.5. (Более поздние еженедельные сборки WiX, похоже, сильно повреждены по сравнению с их шаблоном настраиваемых действий, по крайней мере, на данный момент. 1930 - самая последняя сборка, которая, кажется, создает C # CA с рабочими ссылками.)

У меня есть две сборки пользовательских действий, написанные на C #. Один из них работает нормально. Другой сбой со следующей ошибкой:

CustomActionnNameHere returned actual error code 1154 (note this may not be 100% accurate if translation happened inside sandbox)

Я сравнил файлы .csproj и .wixproj, и, насколько я могу судить, различия уместны (например, список включенных файлов .cs). Я изменил нерабочие .wxs так, чтобы они вызывали рабочее настраиваемое действие вместо нерабочего настраиваемого действия, и оно работает как ожидалось.

Что еще я могу посмотреть, чтобы заставить это работать?

Редактирование: просто для завершения 1154 ссылается на недопустимую DLL - net helpmsg переводит ее (на английском языке) в «Один из файлов библиотеки, необходимый для запуска этого приложения, поврежден».

Второе редактирование: запустил peverify против dll (вытащил копию из \ windows \ installer во время работы установщика), и он говорит, что в dll все нормально. В DLL есть только метод настраиваемого действия с «возвращаемым успехом», поэтому проверить его не так уж и много, но он подтверждает, что DLL не повреждена.

Третье редактирование: код в нарушенном настраиваемом действии следует:

using Microsoft.Deployment.WindowsInstaller;

namespace Framework.Installer.Database {
    public class CustomActions {

        [CustomAction]
        public static ActionResult RunMigration(Session session) {

            return ActionResult.Success;
        }

    }
}

Не так много для этого. Соответствующие части .wxs следующие:

<InstallExecuteSequence>
  <Custom Action="DotNetMigratorCustomActionPreviousUp" After="SetMigrationPropertiesPreviousUp"><![CDATA[(&Database = 3)]]></Custom>
</InstallExecuteSequence>

<Binary Id="DotNetMigratorCustomActionDll"
        SourceFile="$(var.Framework.Installer.Database.CustomActions.TargetDir)\SoftwareAnswers.Framework.Installer.Database.CustomActions.dll" />

<CustomAction Id="DotNetMigratorCustomActionPreviousUp"
              Return="check"
              BinaryKey="DotNetMigratorCustomActionDll"
              DllEntry="RunMigration"
              Execute="deferred" />

Ответы на вопрос(7)

Ваш ответ на вопрос