如何根据 C# 中的配置更改 com 接口?
How to change the com-interface depended on the configuration in C#?
我在 c# 中得到了一个 com 接口,如下所示:
[Serializable(), ClassInterface(ClassInterfaceType.None), ComVisible(true)]
[Guid("6e72b1ab-31ca-4852-9552-999999999999")]
[ProgId("SmartCard.SmartCardValidator")]
public class SmartCardValidator : ISmartCardValidator
{
//...
}
由于某些原因,我必须使用相同的 class.
创建 2 个具有不同名称和不同 guid 的独立 com 接口
如何根据编译项目时使用的配置更改 ProgId 和 Guid?
在 C++ 中,我可能会用 #ifdef 做一些事情,但在 C# 中,我没有找到类似的东西。
在 C# 中也存在一些有限的预处理器支持。不过,您必须使用 #if <some condition>
而不是 #ifdef
。
那就是
#if Configuration1
[Guid("6e72b1ab-31ca-4852-9552-999999999999")]
#else
[Guid("6e72b1ab-31ca-4852-9552-000000000000")]
#endif
只能从命令行(或项目文件)或源文件的第一行设置条件。这意味着 #define
只允许在除注释之外的任何其他代码行之前。
要在项目中定义条件符号,请使用“项目属性 -> 构建 -> 条件编译符号”
我在 c# 中得到了一个 com 接口,如下所示:
[Serializable(), ClassInterface(ClassInterfaceType.None), ComVisible(true)]
[Guid("6e72b1ab-31ca-4852-9552-999999999999")]
[ProgId("SmartCard.SmartCardValidator")]
public class SmartCardValidator : ISmartCardValidator
{
//...
}
由于某些原因,我必须使用相同的 class.
创建 2 个具有不同名称和不同 guid 的独立 com 接口如何根据编译项目时使用的配置更改 ProgId 和 Guid?
在 C++ 中,我可能会用 #ifdef 做一些事情,但在 C# 中,我没有找到类似的东西。
在 C# 中也存在一些有限的预处理器支持。不过,您必须使用 #if <some condition>
而不是 #ifdef
。
那就是
#if Configuration1
[Guid("6e72b1ab-31ca-4852-9552-999999999999")]
#else
[Guid("6e72b1ab-31ca-4852-9552-000000000000")]
#endif
只能从命令行(或项目文件)或源文件的第一行设置条件。这意味着 #define
只允许在除注释之外的任何其他代码行之前。
要在项目中定义条件符号,请使用“项目属性 -> 构建 -> 条件编译符号”