【问题标题】:Could not load Windows.winmd无法加载 Windows.winmd
【发布时间】:2015-09-28 16:36:26
【问题描述】:

我正在按照here 中的以下示例在 Win32 应用程序中使用 WinRT API。

我添加了对System.RuntimeSystem.Runtime.InteropServices.WindowsRunTime 的引用,但是当我添加对Windows.winmd 的引用时

我收到以下错误:

错误 1 ​​生成清单时出现问题。无法加载文件或程序集“C:\Program Files (x86)\Windows Kits\8.1\References\CommonConfiguration\Neutral\Windows.winmd”或其依赖项之一。尝试加载格式不正确的程序。

我使用不同的 .NET 框架和 Visual Studio 版本尝试了各种配置。我可以尝试什么?

【问题讨论】:

  • 很难猜,这在 VS2013 中运行良好。您没有按照博客文章中的说明进行操作,您至少更改了 TargetPlatformVersion 值。你还改变了什么?
  • 我做了一个单独的解决方案,它确实有效。我将所有参考资料与我的第一个项目进行了比较,但我找不到任何差异。有什么方法可以检查哪些程序集导致错误以及在哪里?
  • 我也面临这个问题。有没有人确定导致上述错误的原因?同一个项目在 VS2012 中不会出现这种编译错误,只有 VS2013。但是我需要它在 VS2013 中编译,所以我可以点击一次发布。
  • @Anansi,此链接stackoverflow.com/a/32810288/1948785 可能会有所帮助

标签: c# .net windows-runtime


【解决方案1】:

好像设置

<GenerateManifests>true</GenerateManifests>

在项目文件(例如 .csproj)中与 winmd 引用不兼容。

启用 ClickOnce 安全设置时添加此设置(项目属性 => 安全 => 启用 ClickOnce 安全设置复选框)。

到目前为止,我找不到解决具体问题的方法,但我找到了一种解决方法,它适用于我的情况:我刚刚在我的解决方案中创建了一个单独的类库项目,主项目引用了它。在类库项目文件中我添加了这一行

<TargetPlatformVersion>8.0</TargetPlatformVersion>

如参考文章中所述。

库项目编译完成,主项目也可以正常使用dll。

【讨论】:

    【解决方案2】:

    我在这个stackoverflow 解决方案之后解决了一个非常类似的问题,它基本上让你发布不包括winmd。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      • 1970-01-01
      • 2011-01-24
      • 2010-10-21
      • 1970-01-01
      相关资源
      最近更新 更多