我在WP8应用程序中有一个C ++运行时组件,如果我更改命名空间名称,每当我尝试在该命名空间中实例化一个类时,我都会抛出一个“TargetInvocation”异常。
例如,如果我创建默认的C ++ Windows运行时组件,标题如下所示:
#pragma once
namespace CppComponent1
{
public ref class WindowsPhoneRuntimeComponent sealed
{
public:
WindowsPhoneRuntimeComponent();
};
}
如果我在.h和.cpp中将CppComponent1
更改为CppComponent2
,然后尝试在我的C#代码中实例化WindowsPhoneRuntimeComponent
对象,则会收到以下错误:< / p>
A first chance exception of type 'System.TypeLoadException' occurred in Unknown Module.
A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.ni.dll
A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in Microsoft.Phone.ni.dll
如何在WP8应用程序中更改本机模块的命名空间?谢谢!
答案 0 :(得分:6)
声明组件的Windows元数据(WinMD)文件的名称必须是声明公共类型的命名空间的前缀。 (我提供了对命名空间规则in an answer to another question稍微详细的解释。)
如果将命名空间从CppComponent1
重命名为CppComponent2
,则还需要将构建生成的WinMD文件从CppComponent1.winmd
重命名为CppComponent2.winmd
。