C# 从字符串到布尔值的奇怪映射行为

C# 从字符串到布尔值的奇怪映射行为,c#,.net,azure,automapper,C#,.net,Azure,Automapper,由于错误,我的项目中有人在automapper配置文件中写了以下句子: Mapper.CreateMap<Appointment, AppointmentModel>() .ForMember(x => x.DeclineStart, o => o.MapFrom(x => x.DeclineStart.ToString())) 我知道在这种情况下,没有必要为此属性创建任何映射规则 令我惊讶的是,这种映射(从字符串到布尔值)正在工作 但当我们在Azure云

由于错误,我的项目中有人在automapper配置文件中写了以下句子:

Mapper.CreateMap<Appointment, AppointmentModel>()
    .ForMember(x => x.DeclineStart, o => o.MapFrom(x => x.DeclineStart.ToString()))
我知道在这种情况下,没有必要为此属性创建任何映射规则

令我惊讶的是,这种映射(从
字符串
布尔值
)正在工作

但当我们在Azure云服务上发布应用程序时,此代码将引发
automappingexception
,这表明:

Missing type map configuration or unsupported mapping.
Mapping types:String -> Boolean (System.String -> System.Boolean)
Destination path: AppointmentModel.DeclineStartBackfill.DeclineStartBackfill
Source value:False
同一代码如何可能在本地工作,但在Azure上不工作

提前谢谢


Azure计算机配置:Windows Server 2012 R2/.NET Framework 4.5.1

本地计算机配置:Windows 7/.NET Framework 4.5.2


Automapper版本:3.1.0

是否部署了所有Automapper程序集,包括Automapper.Net4.dll程序集?该附加程序集在.NET4中提供了其他地方不可用的扩展,包括类型转换器

您有两个选项:手动引用.NET4.dll程序集中的内容:

public static class LinkerHelper {
    public static object BecauseAzureDeploymentsAreDumb() {
        var foo = typeof(HashSetMapper);
        return foo;
    }
}

或者升级到AutoMapper的最新beta版,在那里我组合了平台特定的程序集。

Hmmm,没有。但是为什么会这样-我无法理解。我的所有依赖项都是由Nuget加载的(对于AutoMapper,它是:)。这个程序集(AutoMapper.Net4.dll)在我的开发人员机器上本地加载,但在Azure虚拟机上没有加载。实际上,只有一个AutoMapper.dll存在。因此,如果您更新到预发行版,这将消失。这是因为没有代码引用.Net4.dll程序集中的类型,即使您引用了它,部署人员仍然认为“嗯,没有使用它,所以我不会部署”。这太愚蠢了,我在4.0预习中只做了一个程序集就解决了这个问题。请根据前面的评论编辑你的答案,我会接受的。
public static class LinkerHelper {
    public static object BecauseAzureDeploymentsAreDumb() {
        var foo = typeof(HashSetMapper);
        return foo;
    }
}