- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个基于数据库表创建许多类的 t4 模板。这些类需要向 COM 公开,因此使用 GuidAttribute
属性声明它们。
每当我编译项目,说要测试一些东西并在测试环境中注册它时,都会为每个类定义创建新的 GUID,我开始担心我可能会对 Windows 注册表做坏事。 .
如果我编译项目并且我有 Class1
的定义
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
[GuidAttribute("AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA")]
public class Class1
{
...
}
明天我想测试别的东西,Class1
现在看起来像
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
[GuidAttribute("BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB")]
public class Class1
{
...
}
以前的 GUID 是否会保留在注册表中,或者注册过程是否足够智能以删除以前注册的所有内容?
这整个问题可能来自于我对这些 GUID 的用途以及它们与 CLSID 的关系的无知,但事实上它们是用类定义静态声明的,而且我“动态地做这件事让我有些不安。”
最佳答案
Will the previous GUID remain in the registry
如果您没有明确注销该组件,可以。当然容易忘记。您必须从提升的命令提示符运行 Regasm.exe/uninstall。
is the registration process smart enough to remove everything
取决于您的注册方式。如果您让 MSBuild 执行此操作(项目 + 属性、构建选项卡、注册 COM 互操作选项),那么它会在重建 DLL 之前自动注销服务器。但是由于您使用 [Guid],它当然会立即将其写回 :) 净效果为零。如果您通过运行 Regasm.exe 手动执行此操作,则不会发生注销。
请记住 [Guid] 在 COM 中是神圣的。像您那样明确指定是非常冒险的,COM 中有一条严格的规则,您必须在更改声明时更改 guid。不这样做会导致非常讨厌的 DLL hell 问题。只有当您必须为现有的 COM 服务器编写替换时,才可以使用 [Guid] 属性。或者当您不让 MSBuild 清理时避免注册表污染,或者想要避免客户端编程工具让您不得不不断地重新选择类型库。但是,在完成测试后再次删除该属性非常重要。当然容易忘记 :)
关于c# - 使用 GuidAttribute 动态声明的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26613830/
所以我正在使用 NetOffice 创建一个 Outlook 插件。 在插件入口点它有这样的东西: [GuidAttribute("d7066ab2-ac03-431a-bea5-b70d3efab2
我有一个基于数据库表创建许多类的 t4 模板。这些类需要向 COM 公开,因此使用 GuidAttribute 属性声明它们。 每当我编译项目,说要测试一些东西并在测试环境中注册它时,都会为每个类定义
向 C# 类添加 GUID 有什么值(value)?查看使用此链接的示例:https://msdn.microsoft.com/en-us/library/system.runtime.interop
我使用 .NET Core RC2 编写了一个库,现在我将其更新到 RTM。除了一个问题之外,迁移过程中没有出现任何问题。由于某种原因,Visual Studio(以及 dotnet 实用程序)引发有
我想弄清楚为什么要将此属性添加到类中。当我搜索时,Google 只会显示与 COM 相关的 Material ;但应用程序不通过 COM 执行任何操作。 checkin 注释没有提供任何启发(它指的是
我是一名优秀的程序员,十分优秀!