[英]How to use the correct WindowsRuntime.dll in WPF for XAML Islands?
我正在開發一個 WPF 應用程序,我想添加XAML Islands
以便能夠在我的應用程序中使用 Windows 10 控件。 按照本教程,我通過 Nuget 包管理器添加了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.config
和packages.config
文件 - 下面發布了確切的行)並且我還在MyProject.csproj
文件中默認添加了一個 WindowsRuntime.dll,方法如下:
<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.
, This application has failed to start because the application configuration is incorrect.
我還嘗試刪除安裝 XamlHost 項目時添加的其他導入:
因此,從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
:
<package id="System.Runtime.WindowsRuntime" version="4.6.0" targetFramework="net471" />
但它拋出了相同的彈出窗口,即項目配置不正確。
還更新到最新的 Visual Studio(我使用的是 vs2019 社區),更新到最新的 Windows SDK,以及最新的 .NET Framework。
所以,幾個問題:
MyProject.csproj
文件中的每個引用都是從packages
文件夾中添加的,除了這個WindowRuntime
,它來自 Program Files(上面的路徑),為什么沒有從packages
文件夾中引用? (還嘗試將其版本更改為 4.6.0,什么也沒有。嘗試替換導入路徑並將其設置為包文件夾,什么也沒有。如果我刪除它,甚至不編譯項目)。Program Files
WindowsRuntime.dll
路徑中.NetCore\\v4.5\\
是什么,但是最新的 .NetCore 是 3.1? 並且它包含一個WindowsRuntime.dll
版本 4.0.0,為什么?我究竟做錯了什么?
從文檔:
僅在面向.NET Core 3.x 的WPF 和 Windows 窗體應用程序中支持使用 XAML 島托管 WinRT XAML 控件。 面向 .NET Framework 的應用不支持 XAML 島。
從您的項目文件格式以及您仍在使用packages.config
文件這一事實來看,您似乎是針對 .NET Framework 的。 這不受支持。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.