3

我在 WP8 应用程序中有一个 C++ 运行时组件,如果我更改命名空间名称,每当我尝试在该命名空间中实例化一个类时,都会引发“TargetInvocation”异常。

例如,如果我创建默认的 C++ Windows 运行时组件,则标题如下所示:

#pragma once

namespace CppComponent1
{
    public ref class WindowsPhoneRuntimeComponent sealed
    {
    public:
        WindowsPhoneRuntimeComponent();
    };
}

如果我在 .h 和 .cpp 中更改CppComponent1CppComponent2,然后尝试WindowsPhoneRuntimeComponent在我的 C# 代码中实例化一个对象,我会收到以下错误:

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 应用程序中本机模块的命名空间?谢谢!

4

1 回答 1

6

声明组件的 Windows 元数据 (WinMD) 文件的名称必须是声明公共类型的命名空间的前缀。(我在另一个问题的回答中提供了对命名空间规则的更详细的解释。)

如果将命名空间从 重命名CppComponent1CppComponent2,则还需要将构建生成的 WinMD 文件从 重命名CppComponent1.winmdCppComponent2.winmd

于 2013-01-14T04:40:36.477 回答