VS2017 C#创建新的构建配置中断使用语句

时间:2017-11-10 21:03:25

标签: c# visual-studio-2017

在VS2017中,我正在尝试为QA设置新配置。我正在创建配置为“QA”并从“发布”复制设置。我选中了“创建新项目配置”复选框。

当我在下拉列表中切换到QA版本时,我突然遇到了我在调试版或发布版中没有的实体框架错误。

“名称空间'System.Data'中不存在类型或命名空间名称'Entity'(您是否缺少程序集引用?)”

“找不到类型或命名空间名称'EntityConnectionStringBuilder'(您是否缺少using指令或程序集引用?)”

如果我切换到Debug或Release,这些错误就会消失,一切都很好并按预期工作。

以下是问题发生的代码:

using Redacted.Stuff;
using System.Data.Entity.Core.EntityClient;
using System.Reflection;

namespace MoreRedacted.Stuff
{
public class RedactedClass
{
    public static string GetConnectionString()
    {
        var self = Assembly.GetCallingAssembly().GetName().Name;

        string constr = string.Empty;

#if (DEBUG)
        constr = "connection_dev";
#elif (QA)
        constr = "connection_qa";
#else
        constr = "connection_prod";
#endif

        return new EntityConnectionStringBuilder
        {
            Provider = "System.Data.SqlClient",
            ProviderConnectionString = (new ConfigManager()).ConnectionStrings["RedactedConnection"].ConnectionString,
            Metadata = $"res://{ self }/EF.EFRedacted.csdl|res://{ self }/EF.EFRedacted.ssdl|res://{ self }/EF.EFRedacted.msl"
        }.ToString();
    }
  }
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

想出来......似乎即使这个项目是另一个项目的副本(我将它拆分为基于MEF的插件),它也没有带来这些包。我检查过,即使原始项目安装了EntityFramework ......实际上这确实有意义,因为原始项目没有QA配置。

所以我想重要的一点是,如果复制了一个项目,然后在混合中添加一个新配置,nuget包就会中断。 (我假设这是因为nuget如何在项目中设置包。)