如何在WPF中为XAML Islands使用正确的WindowsRuntime.dll?

问题描述

我正在开发WPF应用程序,我想添加XAML Islands以便能够在我的应用程序中使用Windows 10控件。 在完成this教程之后,我通过Nuget Package Manager添加了Microsoft.Toolkit.Wpf.UI.XamlHost项目。它还安装了它的依赖项,例如Microsoft.Windows.SDK.Contracts (10.0.18362.2005),它具有对System.Runtime.WindowsRuntime >= 4.6.0的依赖项。当我运行项目时,出现以下编译错误:

Multiple assemblies with equivalent identity have been imported: 
'C:\Users\*[path to my project]*\packages\System.Runtime.WindowsRuntime.4.6.0\ref\netstandard2.0\System.Runtime.WindowsRuntime.dll'
and 
'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5\System.Runtime.WindowsRuntime.dll'.
Remove one of the duplicate references.

清除错误消息,XamlHost安装了它的依赖项(它修改了app.configpackages.config文件-确切的行在下面发布),并且我还默认在{{ 1}}按照以下方式归档:

MyProject.csproj

因此,我离开了XamlHost当前安装的依赖项,并删除了我上面发布的默认依赖项。然后,当我编译它时,抛出一个错误弹出窗口:<Reference Include="System.Runtime.WindowsRuntime,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089,processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5\System.Runtime.WindowsRuntime.dll</HintPath> </Reference> 我还试图删除另一个导入,该导入是在安装XamlHost项目时添加的:

因此,从This application has failed to start because the application configuration is incorrect.中删除了以下几行:

app.config

并且来自<dependentAssembly> <assemblyIdentity name="System.Runtime.WindowsRuntime" publicKeyToken="b77a5c561934e089" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.6.0.0" newVersion="4.6.0.0" /> </dependentAssembly>

packages.config

但是它抛出了相同的弹出窗口,表明项目配置不正确。

还更新到最新的Visual Studio(我正在使用vs2019社区),更新到最新的Windows SDK和最新的.NET Framework。

那么,有几个问题:

  1. <package id="System.Runtime.WindowsRuntime" version="4.6.0" targetFramework="net471" /> 文件中的每个引用都是从MyProject.csproj文件夹添加的,除了此packages来自程序文件(上面的路径),为什么没有从{{ 1}}文件夹? (也尝试将其版本更改为4.6.0,什么也没有。尝试替换导入路径并将其设置到packages文件夹,什么也没有。如果删除它,甚至不会编译项目。)
  2. WindowRuntime中到packages的路径中,WindowsRuntime.dll是什么,但是最新的.NetCore是3.1?并且其中包含Program Files版本4.0.0,为什么?

我在做什么错了?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)