【发布时间】:2011-08-04 22:06:15
【问题描述】:
(编辑:已解决,解决方案很简单 - 在 2008SP1 中构建,获取生成的 Interop.NetFwTypeLib.dll 并将其用作第 3 方程序集。感谢 Rick Sladkey。)
我已将一些引用 COM 对象的代码(如下)升级到 VS 2010。仍在 .Net 3.5 上。
从那时起,构建就被破坏了:(The type or namespace name 'INetFwMgr' could not be found (are you missing a using directive or an assembly reference?))...
我找到了Microsoft bug,其中有人说:
SDK 4.0 tlbimp.exe 始终导入 第一个,它不遵循 正确的流。即使你手动 调用 tlbimp.exe 并给出正确的 小路。这是造成这种情况的根本原因 问题。任何驻留在 非默认流将具有相同的 4.0 的 tlbimp.exe 存在问题。
然后是:
SDK 3.5 tlbimp.exe 没有这个 问题。解决方法是使用 3.5 tlbimp.exe 手动导入 来自完整路径的互操作程序集 它存储在注册表中,并且 在中引用此互操作程序集 你的项目。
有人可以解释解决方法吗? (我尝试了明显的tlbimp COM_DLL /out=OUT_DLL,不好)。
是否有人在另一个 COM 中遇到过这种情况?
谢谢!
注意:XP...
另一个注意事项:也尝试了 VS2010 SP1,没有运气。
代码(部分...):
using NetFwTypeLib;
namespace Utils
{
public class MSFirewall
{
private const string CLSID_FIREWALL_MANAGER = "{304CE942-6E39-40D8-943A-B913C40C9CD4}";
private NetFwTypeLib.INetFwMgr GetFirewallManager()
{
Type objectType = Type.GetTypeFromCLSID(new Guid(CLSID_FIREWALL_MANAGER));
return Activator.CreateInstance(objectType) as NetFwTypeLib.INetFwMgr;
}
}
}
【问题讨论】:
标签: c# .net visual-studio-2010