我在我的解决方案中添加了一个可移植的类库,其中包含一个链接到所有项目的全局文件。此全局文件包含程序集级别属性,例如版本,区域性和Com可见性。我想要解决的问题是,某些属性(如ComVisible)在PCL的上下文中无效,那么是否有与#if一起使用的符号以防止该属性在构建时被包含?
答案 0 :(得分:3)
您可以在构建属性中配置自己的预处理器符号。我不知道 default 是否有任何特定的可移植类库,但是在项目的每个配置中指定一个并不困难。
答案 1 :(得分:1)
我通过将stub / dummy属性类添加到模仿其FCL对应项的紧凑框架项目来克服了这个问题:
// Shared source file
[ComVisible(true)]
public class Foo
{
}
// Dummy class in portable project -- exists only to facilitate compilation of the shared source file
namespace System
{
[AttributeUsage(AttributeTarget.Class)]
public class ComVisibleAttribute : Attribute
{
public ComVisibleAttribue(bool visible)
{
// Dummy implementation
}
}
}
现在,共享源代码文件将在两个项目中编译,无需对代码进行任何修改,也无需任何预处理程序指令。