我在尝试构建 MSM 时遇到了这个问题。显然,模块属性(以及与此相关的所有标识符)在模块生成期间通过在其名称末尾添加模块 GUID 来重命名。例如,属性“MY_PROPERTY”重命名为“MY_PROPERTY.803A3089_928F_46F1_BBAE_CBD39A7D6A72”(假设 803A3089-928F-46F1-BBAE-CBD39A7D6A72 是模块 GUID)。我相信这是用于防止多个模块尝试使用具有相同名称的标识符之间发生冲突的机制。
在 MSM 中,我需要调用一个 DLL 自定义操作,该操作需要使用某个值设置特定属性(我们称之为“THE_PROPERTY”)。问题是 THE_PROPERTY 如上所述被重命名为 THE_PROPERTY.803A3089_928F_46F1_BBAE_CBD39A7D6A72,因此自定义操作永远找不到该属性并失败。
有没有办法解决这个问题?我正在考虑修改自定义操作,以便它尝试(以某种方式)找出调用它的模块的 GUID。一种方法是查看当前操作名称,该名称还应包括 GUID。但是我可以从自定义操作中获取当前操作名称吗?你能想出另一种解决方案吗?
谢谢!