WiX自定义操作项目 - BadImageFormatException

时间:2011-06-08 07:45:30

标签: deployment installer wix custom-action

我正在开发我的第一个自定义操作,但我无法获取生成的.CA.dll文件。这是最简单的过程,结果是:

我创建了一个自定义操作项目并保留所有默认值。该课程如下:

using Microsoft.Deployment.WindowsInstaller;
namespace CustomAction
{
public class CustomActions
{
[CustomAction]
    public static ActionResult CustomAction1(Session session)
    {
        session.Log("Begin CustomAction1");

        return ActionResult.Success;
    }
}
}

然后我构建程序集(在调试或发布中),它创建了一个CustomAction.CA.dll文件。然后我尝试运行此测试:

[TestMethod]
    public void LoadAssembly()
    {
        Assembly.LoadFrom(@"D:\CustomAction\bin\Debug\CustomAction.CA.dll");
    }

得到错误: System.BadImageFormatException:无法加载文件或程序集'file:/// D:\ CustomAction \ bin \ Debug \ CustomAction.CA.dll'或其依赖项之一。该模块应该包含一个程序集清单。

我也不能从我的WiX项目中引用自定义操作。真的很沮丧!

编辑: 看一看,当我运行VS测试管理器时,我在应用程序事件日志中得到以下内容:
TmiDataManager.TryConvertPropertyValueToDisplayText:无法使用属性描述符的类型转换器转换属性值。 System.FormatException:输入字符串的格式不正确 at System.Number.StringToNumber(String str,NumberStyles options,NumberBuffer& number,NumberFormatInfo info,Boolean parseDecimal)
   在System.Number.ParseInt32(String s,NumberStyles style,NumberFormatInfo info)
   在System.String.System.IConvertible.ToInt32(IFormatProvider提供者)
   在System.Convert.DefaultToType(IConvertible值,Type targetType,IFormatProvider Provider)
   在System.String.System.IConvertible.ToType(Type type,IFormatProvider provider)
   在System.ComponentModel.EnumConverter.ConvertTo(ITypeDescriptorContext context,CultureInfo culture,Object value,Type destinationType)
   在System.ComponentModel.TypeConverter.ConvertToString(Object value)“

进一步编辑:我可以通过Assembly.LoadFrom加载正常的CustomAction.dll,所以这可能是BadImageFormat的另一个问题吗?可能有任何理由没有进一步依赖的空白操作不会加载到我的WiX项目中吗?

1 个答案:

答案 0 :(得分:3)

CustomAction.CA.dll是一个本机代码DLL,它包含托管代码程序集,并且知道如何在MSI中作为自定义操作运行。托管代码程序集是“CustomAction.dll。”