项目参考尝试查找平台特定的 dll,当它是一个不可知的库时

问题描述 投票:0回答:1

我有一个多平台 MAUI 解决方案,其中包含多个项目。其中一个项目引用需要随平台而更改,因此我将其从 .sln 文件(GUI 放置它的位置)移至项目文件中作为条件元素:

<ItemGroup>
  <ProjectReference
      Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) != 'android'"
      Include="..\NonAndroidLibrary\NonAndroidLibrary.csproj"
    >
    <Project>{8cd7a9a7-9740-4f03-83bc-4ae8f09cdcb9}</Project>
    <Name>NonAndroidLibrary</Name>
  </ProjectReference>
...
</ItemGroup>

库项目仅针对 .net7.0,但我收到错误,因为找不到特定于平台的二进制文件:

Error   WMC1006 Cannot resolve Assembly or Windows Metadata file 'M:\repos\MainSolution\NonAndroidLibrary\bin\Debug\net7.0-windows10.0.19041.0\NonAndroidLibrary.dll'   MainProject M:\repos\MainSolution\MainProject\MainProject.csproj    1   
Error   CS0006  Metadata file 'M:\repos\MainSolution\NonAndroidLibrary\bin\Debug\net7.0-windows10.0.19041.0\NonAndroidLibrary.dll' could not be found   MainProject (net7.0-android)    M:\repos\MainSolution\MainProject\CSC   1   Active

第二个错误 (CS0006) 在其他平台上重复,但 WMC1006 目前仅在 Windows 上显示。

另一个

.net7.0
项目(仍在 .sln 中引用)不会导致此问题,并且
debug\.net7.0\
中的单个输出 dll 已正确引入。

我需要做什么才能将平台无关的 dll 引入到

.csproj
中的多目标应用程序?

c# msbuild maui
1个回答
0
投票

有一个元素可以放置在

<ProjectReference>
标签内,告诉构建引擎期望什么样的项目:

<SetTargetFramework>TargetFramework=net7.0</SetTargetFramework>

将其放在上面的代码片段中可以解决问题。

VS2022 中的 Intellisense 似乎没有建议使用此元素,但在几个地方引用了它,例如:https://github.com/dotnet/maui/issues/3243

© www.soinside.com 2019 - 2024. All rights reserved.