簡體   English   中英

如何在 XAML 島的 WPF 中使用正確的 WindowsRuntime.dll?

[英]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.configpackages.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。

所以,幾個問題:

  1. MyProject.csproj文件中的每個引用都是從packages文件夾中添加的,除了這個WindowRuntime ,它來自 Program Files(上面的路徑),為什么沒有從packages文件夾中引用? (還嘗試將其版本更改為 4.6.0,什么也沒有。嘗試替換導入路徑並將其設置為包文件夾,什么也沒有。如果我刪除它,甚至不編譯項目)。
  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM