C#一个输出组件中的多个构建配置

C#一个输出组件中的多个构建配置,c#,compilation,C#,Compilation,我有一个C#项目,将在多个项目中使用。为了正确使用库,必须使用编译符号 这是代码的一个示例部分 public class ComputedForeignKeyAttribute #if !EFADDMIGRATION : ForeignKeyAttribute #else : NotMappedAttribute #endif { public ComputedForeignKeyAttribute(string name) #if !EFADDMIGRATION

我有一个C#项目,将在多个项目中使用。为了正确使用库,必须使用编译符号

这是代码的一个示例部分

public class ComputedForeignKeyAttribute
#if !EFADDMIGRATION
    : ForeignKeyAttribute
#else
    : NotMappedAttribute
#endif
{
    public ComputedForeignKeyAttribute(string name)
#if !EFADDMIGRATION
    : base(name)
#endif
    { }
}
因此,如果使用了
EFADDMIGRATION
符号,我将切换构建配置。要运行代码,我需要切换回
DEBUG
RELEASE

将代码移动到外部项目(解决方案之外)时,是否有任何方法可以创建对这些符号也有反应的程序集

Project A references Library C
Project A references Library C
Project A is in solution 1
Project B is in solution 2
Library C is in solution 3
使用
DEBUG
编译项目A将导致
ComputedForeignKeyAttribute
NotMappeAttribute
继承,但使用
EFADDMigation
编译将导致该属性从
ForeignKeyAttribute
继承

是否有一种多符号部件构建的方法?或者是否有其他方法,例如使用
[ConditionalAttribute]


对于那些被问到为什么我需要这个的人。我们使用EntityFrameworkCore不支持的计算外键。因此,对于
addmigration
过程,我们只需更改构建配置以避免迁移错误。在执行过程中,我们希望通过告诉EntityFramework这些字段是外键来获取这些关系。

多符号程序集构建是什么意思?您正在搜索定义“EFADDMigation”指令值的方法吗?使用路径中的EFAM或其他内容,为调试和发布创建EFADDMigation生成配置。我正在搜索一种机制,可以在其中更改ComputedForeignKeyAttribute的继承。当使用符号并使用调试进行编译时,将编译具有调试配置的程序集。使用EF构建配置时,将编译另一个程序集。我可能会错过一些东西。在构建配置之间切换时,库代码也需要切换。