再次问候,
继我之前的问题之后,我试图最大限度地提高我用 C# 编写的 Windows Explorer 扩展的兼容性。特别是,我有兴趣确保它在安装了 .NET 4且未安装 .NET 3.5 及更低版本的环境中工作。有人会认为没有问题,但显然不是那么简单......
有两个问题。首先,非 .NET-4 目标程序集将不会使用 CLR 4 加载,除非它们有一个.config
指定<supportedRuntime version="v4.0" />
. 如果没有这个文件,即使尝试使用ngen
它们也会失败。.config
但我的 DLL 进入 GAC。我如何也可以.config
在其中获取文件?其他人也问过同样的问题,并得出结论“好吧,我将改为创建一个静态设置类。” 显然我不能这样做...
第二个问题:当我用 注册我的 DLL regasm.exe
,然后打开注册表查看它写的内容时,我RuntimeVersion = v2.0.50727
在它的 CLSID 条目下看到。这也可以防止加载 DLL。只有在我手动将RuntimeVersion
值更改v4.0.30319
为 DLL 加载后。
那么我必须让我的安装程序在这里做什么呢?对于第一个我不知道。第二,我想我必须让安装程序手动将注册表的 RuntimeVersion 设置为安装的任何 .NET 版本?这似乎太古怪了,不可能是真的……