名字空间不被识别?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (27)

我得到这个错误:

无法找到类型或名称空间名称'AutoMapper'(您是否缺少using指令或程序集引用?)

有趣的是,我已经在我的项目中引用了这个参考:

这是我的代码:

using System.Collections.Generic;
using DataContract;
using SelectorDAL;
using AutoMapper;

namespace SpecimenSelect
{
    public class SpecimenSelect : ISpecimenSelect
    {
        public SpecimenSelect()
        {
            SetupMaps();
        }

        private static void SetupMaps()
        {
            Mapper.CreateMap<SpecimenDetail, SpecimenDetailContract>();
        }

另一个奇怪的是我的解决方案中有两个其他项目都使用AutoMapper并引用完全相同的AutoMapper.dll文件。他们都工作得很好。

这是一个屏幕截图:

这里是代码(编译好):

using System.Collections.Generic;
using AutoMapper;
using DataContract;
using SelectorDAL;

namespace PatientSelect
{

    public class PatientSelect : IPatientSelect
    {
        public PatientSelect()
        {
            SetupMaps();
        }

        private void SetupMaps()
        {
            Mapper.CreateMap<Patient, PatientContract>();
            Mapper.CreateMap<OrderedTest, OrderedTestsContract>();
            Mapper.CreateMap<Gender, GenderContract>();
        }

两个引用在属性页面上似乎都有相同的数据。

我错过了什么?

我试过了:

  1. 重新启动Visual Studio
  2. 没有使用语句引用(即AutoMapper.Mapper.CreateMap
  3. 清洁和重建

任何其他想法?

提问于
用户回答回答于

检查以确保你的项目未设置为使用.NET Framework 4客户端配置文件。

您可以通过右键单击项目(而不是解决方案)来检查/更改此属性,选择属性 - > 应用程序 - > 目标框架。目标框架是该页面上的下拉菜单。

这是Visual Studio中的一个问题(我甚至会把它称为bug)。AutoMapper需要从.NET Framework 4客户端配置文件中排除的程序集。由于你的项目正在使用该版本的框架,因此它会中断。

当你引用的项目的.NET Framework版本高于创建引用的项目时,类似的错误将传播到构建过程。即一个定位4.5的项目引用一个定位4.5.1的项目会给你这个相同的错误。

发生这种情况时需要更好的错误消息,因为没有理由解释为什么它不会生成,因为错误消息告诉你引用已清楚引用的程序集。

用户回答回答于

可能有两个automapper.dll的?一个带有AutoMapper命名空间,另一个没有?确认两个项目中的路径。

到过那里...

注意到使用的顺序是不同的。

扫码关注云+社区