首页 > 其他分享 >UNO 新建基础库项目构建提示 UNOB0002 错误

UNO 新建基础库项目构建提示 UNOB0002 错误

时间:2024-04-26 09:01:01浏览次数:28  
标签:origin git 代码 gitee 构建 net7.0 UNOB0002 UNO

当咱新建了一个 UNO 的基础库或被引用的项目时,可能采用的是默认的基础库或库项目创建方法,被引用的程序集没有带上 WinUI 的黑科技,导致构建提示 UNOB0002: Project XX contains a reference to Uno Platform but does not contain a WinAppSDK compatible target framework. 失败

如下面代码,这是默认我新建的项目的代码,以下代码已经添加了对 windows10.0.19041 的引用了

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows')) or '$(EnableWindowsTargeting)' == 'true'">$(TargetFrameworks);$(DotNetVersion)-windows10.0.19041</TargetFrameworks>
    <TargetFrameworks>$(TargetFrameworks);$(DotNetVersion);</TargetFrameworks>
    <TargetFrameworks Condition="'$(OverrideTargetFramework)'!=''">$(OverrideTargetFramework)</TargetFrameworks>

    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Uno.WinUI" />
  </ItemGroup>
</Project>

然而以上代码依然会在构建时失败

遇到错误 UNOB0002: Project XX contains a reference to Uno Platform but does not contain a WinAppSDK compatible target framework.

根据 UNO 官方的文档的如下描述

This error code means that a WinAppSDK project is referencing a project in your solution which is not providing a net7.0-windows10.xx TargetFramework.
This can happen if a project contains only a net7.0 TargetFramework and has a NuGet reference to Uno.WinUI.
To fix this, it is best to start from a Cross Platform Library project template provided by the Uno Platform visual studio extension, or using dotnet new.

解决方法是通过 VisualStudio 模版新建为 UNO 的 Library 项目,或者替换 csproj 为以下代码

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows')) or '$(EnableWindowsTargeting)' == 'true'">$(TargetFrameworks);net7.0-windows10.0.19041</TargetFrameworks>
    <TargetFrameworks>$(TargetFrameworks);net7.0;net7.0-ios;net7.0-maccatalyst;net7.0-android</TargetFrameworks>
    <!-- Ensures the .xr.xml files are generated in a proper layout folder -->
    <GenerateLibraryLayout>true</GenerateLibraryLayout>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Uno.WinUI" />
  </ItemGroup>
  <Choose>
    <When Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">
      <ItemGroup>
        <PackageReference Include="Microsoft.WindowsAppSDK"  />
        <PackageReference Include="Microsoft.Windows.SDK.BuildTools" />
      </ItemGroup>
      <ItemGroup>
        <!--
				If you encounter this error message:

					error NETSDK1148: A referenced assembly was compiled using a newer version of Microsoft.Windows.SDK.NET.dll.
					Please update to a newer .NET SDK in order to reference this assembly.

				This means that the two packages below must be aligned with the "build" version number of
				the "Microsoft.Windows.SDK.BuildTools" package above, and the "revision" version number
				must be the highest found in https://www.nuget.org/packages/Microsoft.Windows.SDK.NET.Ref.
				-->
        <!-- <FrameworkReference Update="Microsoft.Windows.SDK.NET.Ref" RuntimeFrameworkVersion="10.0.22621.28" />
				<FrameworkReference Update="Microsoft.Windows.SDK.NET.Ref" TargetingPackVersion="10.0.22621.28" /> -->
      </ItemGroup>
    </When>
    <Otherwise>
      <ItemGroup>
        <Content Include="Assets\**" />
        <Page Include="**\*.xaml" Exclude="bin\**\*.xaml;obj\**\*.xaml" />
        <Compile Update="**\*.xaml.cs">
          <DependentUpon>%(Filename)</DependentUpon>
        </Compile>
        <PriResource Include="**\*.resw" />
      </ItemGroup>
    </Otherwise>
  </Choose>
  <ItemGroup>
    <UpToDateCheckInput Include="**\*.xaml" Exclude="bin\**\*.xaml;obj\**\*.xaml" />
  </ItemGroup>
</Project>

由于代码比较长,推荐大家还是使用自带的模版创建比较方便

本文以上代码放在githubgitee 欢迎访问

可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码

git init
git remote add origin https://gitee.com/lindexi/lindexi_gd.git
git pull origin 02e2942f9b223eb2dcc66f19441a8f68f2200837

以上使用的是 gitee 的源,如果 gitee 不能访问,请替换为 github 的源。请在命令行继续输入以下代码

git remote remove origin
git remote add origin https://github.com/lindexi/lindexi_gd.git
git pull origin 02e2942f9b223eb2dcc66f19441a8f68f2200837

获取代码之后,进入 LacebayjeejiBehebilawla 文件夹

标签:origin,git,代码,gitee,构建,net7.0,UNOB0002,UNO
From: https://www.cnblogs.com/lindexi/p/17970813

相关文章

  • anythingllm构建专用知识库(问答增加个人文档)
    anythingllm构建专用知识库(问答增加个人文档)anythingllm的文档说明链接:https://docs.useanything.com/faq/why-is-llm-not-using-docs首先打开ollama的服务然后打开anythingllm,点击要用的工作区上的按钮(上传文件,支持多种文件类型(PDF,TXT,DOC等)点击Clicktouploadordrag......
  • 构建插件函数
    1defget_response_from_plugins(name_space_p,post_type_p,user_state_p,data):2#存储每个函数的结果3try:4message=str(data["message"])5except:6message=""78plugin_dir='plugins'......
  • 利用 Amazon EMR Serverless、Amazon Athena、Apache Dolphinscheduler 以及本地 TiDB
    引言在数据驱动的世界中,企业正在寻求可靠且高性能的解决方案来管理其不断增长的数据需求。本系列博客从一个重视数据安全和合规性的B2C金融科技客户的角度来讨论云上云下混合部署的情况下如何利用亚马逊云科技云原生服务、开源社区产品以及第三方工具构建无服务器数据仓库的解......
  • 助力数智化转型:使用检索增强生成【RAG】构建物业行业大模型
    ​本文作者:蔡冠杰,碧桂园服务后端开发高级工程师,拥有8年开发经验。1 (RAG)检索增强生成技术介绍1.1检索增强生成是什么?举个例子,比如我作为员工,直接问大模型:提问:我们公司几点下班?大模型在没有“接触”过我们公司《员工手册》等企业私有数据的情况下,大模型往往难以给出正确......
  • Suno:一键生成原创音乐的AI!还不赶紧体验一下?
    最近一两年,AI的发展是飞速的,从AI聊天到AI绘画,再到AI视频,一次一次的刷新我们的认知,最近AI一键生成音乐也出来了。不知道大家有没有刷到过。 今天盘哥就来把它分享给大家,你也可以一键生成专属于自己的音乐。 01-Suno(网站)它就是一个可以一键生成音乐的AI网站,我测试的时候是......
  • dotnet 修复 GitHub Action 构建过程提示 NETSDK1127 错误
    本文告诉大家,如何修复GitHubAction构建过程提示errorNETSDK1127:ThetargetingpackMicrosoft.WindowsDesktop.App.WindowsFormsisnotinstalled.Pleaserestoreandtryagain.错误在进行GitHubAction构建时,如果自己的项目是一个旧项目,采用旧的.NETSDK版本,将可......
  • dotnet 如何将 Microsoft.Maui.Graphics 对接到 UNO 框架
    本文将和大家介绍如何将Microsoft.Maui.Graphics对接到UNO框架里面。一旦完成Microsoft.Maui.Graphics对接,即可让UNO框架复用现有的许多绘制的基础设施和现有基础库,且可以更进一步与MAUI打通众所周知,在UNO里面有大量的项目类型都是基于Skia作为底层渲染引擎构建出......
  • 从 Uno Platform 4 更新 Uno Platform 5 的迁移方法
    本文记录我的一个小项目从UnoPlatform4更新UnoPlatform5的一些变更和迁移方法,由于项目太小,可能踩到的坑不多官方文档:MigratingtoUnoPlatform5.0表扬一下官方,文档写的很详细Directory.Packages.props所有的Uno相关包的版本更新:-<PackageVersionInclude="U......
  • dotnet UNO 如何在调试下输出界面层级结构
    本文将告诉大家如何在UNO里面将界面的层级结构输出到调试窗口实现方法非常简单,和WPF或UWP等的方法是一样的,那就是通过可视化树遍历的方式,如以下代码staticclassUISpyHelper{publicstaticvoidSpy(thisDependencyObjectelement){......
  • dotnet 修复多框架 TargetFrameworks 包含不受支持平台导致构建失败
    本文将告诉大家如何修复dotnet项目里的多框架TargetFrameworks如果包含了当前系统无法支持的平台时,如何进行跳过。解决在Linux平台构建时提示MacCatalyst不受支持而构建失败故事的背景是我期望在GitHub的Action里面构建一个项目,我期望能够在Windows和Linux和Ma......