想象一个场景,您有一个复杂的 WinRT 代码框架,您希望从 C++ Metro 应用程序和 C# 桌面应用程序访问该框架。
有没有办法将 WinMD 包含在非 Metro 应用程序中?
UPDATE:这仅适用于 Windows 8。Microsoft 在 Windows 8.1 中禁用了此功能。
就在这里。尝试通过引用管理器添加它们时的块似乎是在 Visual Studio 本身内部实现的。添加后,Visual Studio 将像对待任何其他 WinMD 文件一样对待引用的文件。
NOTE:微软不支持此解决方法!
要将自定义 WinMD 文件添加到任何非 Metro 应用程序,您必须首先确保您的目标是 .NET 4.5。这不适用于任何早期版本的 .NET Framework。
一旦您以 .NET 4.5 为目标,请卸载项目文件并打开它进行编辑。然后在最后的后面添加如下代码<PropertyGroup>
在项目文件中:
<PropertyGroup>
<TargetPlatformVersion>8.0</TargetPlatformVersion>
</PropertyGroup>
接下来,找到<ItemGroup>
包含您的参考文献并添加以下内容:
<Reference Include="{Namespace}">
<HintPath>{Path to WinMD file}</HintPath>
</Reference>
虽然我不能保证这样做不会出现任何问题,并且考虑到 Microsoft 已经非常清楚这一事实,即无论您使用哪个框架配置文件,CLR 都会加载相同的程序集,但我强烈怀疑这不会导致任何问题伤害。
关于类库的注释。如果您将 WinMD 包含到非 Metro 类库中,然后在非 Metro 应用程序中引用该库;如果不引用应用程序中的 WinMD 文件或提供包装器类型,您将无法访问类库公开的任何自定义 WinRT 类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)