ios Xamarin.Shared.Sdk.targets(366,3)消息传递远程异常、聚合异常和未实现异常

new9mtju  于 2023-01-22  发布在  iOS
关注(0)|答案(2)|浏览(112)

我正在运行此命令

dotnet publish -f:net6.0-ios -c:Release

构建一个. NET MAUI应用程序并为iOS创建 *. ipa文件(末尾为 *. csproj)
我得到了这个错误:
C:\程序文件\点网络\包\Microsoft.iOS.Sdk\15.4.303\目标**Xamarin.共享. Sdk.目标(366,3):错误:消息远程异常:执行主题xvs/build/execute-task/OnesieMobile/18e8f3c002fMergeAppBundles [C:\Development_BuildPipeline\OnesieMobile\OnesieMobile\OnesieMobile. csproj]的回复时,客户端构建版本出错
C:\程序文件\点网络\包\Microsoft.iOS.Sdk\15.4.303\目标**Xamarin.共享. Sdk.目标(366,3)
:错误:聚合异常:出现一个或多个错误。(未实现该方法或操作。)[C:\Development_BuildPipeline\Ones ieMobile\OnesieMobile\OnesieMobile. csproj]
C:\程序文件\点网络\包\Microsoft.iOS.Sdk\15.4.303\目标**Xamarin.共享. Sdk.目标(366,3)**:错误:未实现异常:未实现该方法或操作。[C:\Development_BuildPipeline\OnesieMobile\OnesieMobile\Ones ieMobile. csproj]
C:\程序文件\点网络\包\微软. iOS.Sdk\15.4.303\目标\Xamarin.Shared.Sdk.targets(366,3):错误:[C:\开发_构建管道\OnesieMobile\OnesieMobile\OnesieMobile. csproj]
我能够成功地完成将应用程序发布到我的iPhone的整个过程,使用Visual Studio 2022中模板附带的演示. NET MAUI应用程序。
我还能够克隆和发布这个项目https://github.com/jfversluis/dotnet-maui-workshop/tree/main/Part%202%20-%20MVVM所有的方式到我的iPhone。
所以我想我开始做我自己的项目。

  • 当我在VisualStudio中按下播放按钮并在调试器中将其作为Windows应用程序在Windows上运行时,它工作得很好
  • 通过我机器上的Visual Studio,它在云Mac中的远程iOS模拟器上也能很好地工作。(尽管启动它需要15分钟!)
    • 环境:**

Windows 10家庭版,21小时2
VS 2022版本17.3.0预览版1.1

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

    <PropertyGroup>
        <TargetFrameworks>net6.0-android;net6.0-ios;net6.0-maccatalyst</TargetFrameworks>
        <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net6.0-windows10.0.19041.0</TargetFrameworks>
        <!-- Uncomment to also build the tizen app. You will need to install tizen by following this: https://github.com/Samsung/Tizen.NET -->
        <!-- <TargetFrameworks>$(TargetFrameworks);net6.0-tizen</TargetFrameworks> -->
        <OutputType>Exe</OutputType>
        <RootNamespace>OnesieMobile</RootNamespace>
        <UseMaui>true</UseMaui>
        <SingleProject>true</SingleProject>
        <ImplicitUsings>enable</ImplicitUsings>

        <!-- Display name -->
        <ApplicationTitle>OnesieMobile</ApplicationTitle>

        <!-- App Identifier -->
        <ApplicationId>com.maui.app</ApplicationId>
        <ApplicationIdGuid>447A62C6-2841-41D6-B9AE-444E6E1A908B</ApplicationIdGuid>

        <!-- Versions -->
        <ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>
        <ApplicationVersion>1</ApplicationVersion>

        <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">14.2</SupportedOSPlatformVersion>
        <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">14.0</SupportedOSPlatformVersion>
        <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">21.0</SupportedOSPlatformVersion>
        <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion>
        <TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion>
        <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'tizen'">6.5</SupportedOSPlatformVersion>
    </PropertyGroup>
    
    <PropertyGroup Condition="$(TargetFramework.Contains('-ios')) and '$(Configuration)' == 'Release'">
        <RuntimeIdentifiers>ios-arm64</RuntimeIdentifiers>
        <CodesignProvision>Maui Provisioning</CodesignProvision>
        <CodesignKey>Apple Distribution: My Name (XXXX)</CodesignKey>

        <ArchiveOnBuild>true</ArchiveOnBuild>
        <TcpPort>58181</TcpPort>
        <ServerAddress>xxxxx</ServerAddress>
        <ServerUser>xxxx</ServerUser>
        <ServerPassword>xxxx</ServerPassword>
        <_DotNetRootRemoteDirectory>/Users/xxxx/Library/Caches/Xamarin/XMA/SDKs/dotnet/</_DotNetRootRemoteDirectory>

    </PropertyGroup>

    <ItemGroup>
        <!-- App Icon -->
        <MauiIcon Include="Resources\AppIcon\appicon.svg" ForegroundFile="Resources\AppIcon\appiconfg.svg" Color="#512BD4" />

        <!-- Splash Screen -->
        <MauiSplashScreen Include="Resources\Splash\splash.svg" Color="#512BD4" BaseSize="128,128" />

        <!-- Images -->
        <MauiImage Include="Resources\Images\*" />
        <MauiImage Update="Resources\Images\dotnet_bot.svg" BaseSize="168,208" />

        <!-- Custom Fonts -->
        <MauiFont Include="Resources\Fonts\*" />

        <!-- Raw Assets (also remove the "Resources\Raw" prefix) -->
        <MauiAsset Include="Resources\Raw\**" LogicalName="%(RecursiveDir)%(Filename)%(Extension)" />
    </ItemGroup>

    <ItemGroup>
      <PackageReference Include="CommunityToolkit.Maui" Version="1.0.0" />
      <PackageReference Include="CommunityToolkit.Mvvm" Version="7.1.2" />
      <PackageReference Include="sqlite-net-pcl" Version="1.8.116" />
    </ItemGroup>

    <ItemGroup>
      <Compile Update="View\ActivityDetailPage.xaml.cs">
        <DependentUpon>ActivityDetailPage.xaml</DependentUpon>
      </Compile>
    </ItemGroup>

    <ItemGroup>
      <MauiXaml Update="View\ActivityDetailPage.xaml">
        <Generator>MSBuild:Compile</Generator>
      </MauiXaml>
      <MauiXaml Update="View\SettingsPage.xaml">
        <Generator>MSBuild:Compile</Generator>
      </MauiXaml>
    </ItemGroup>

</Project>
o8x7eapl

o8x7eapl1#

想明白了。
我不得不改变

<RuntimeIdentifiers>ios-arm64</RuntimeIdentifiers>

<RuntimeIdentifier>ios-arm64</RuntimeIdentifier>

那就成功了。
官方文档给出了单数版本https://learn.microsoft.com/en-us/dotnet/maui/ios/deployment/overview
我之所以改变它,是因为这个Errors with dotnet publish
但是后来我又看了一下这个error NETSDK1032: The RuntimeIdentifier platform 'ios-arm64' and the PlatformTarget 'x64' must be compatible,这可能是复数形式起作用的最初原因。

<RuntimeIdentifier>iossimulator-x64</RuntimeIdentifier>

并且由于某些原因,项目设置和命令行参数被 *. csproj. user文件否决,因此唯一起作用的属性是复数形式的属性。
不幸的是,我不能告诉所有这些错误后,如果我真的有一个版本,将发布与复数设置。(我相信我做了)
简而言之:

  • 我按照文件
  • 很可能是 *. csproj.用户搞砸了我的配置
  • 这就打乱了我正在思考输入的内容
  • 这就引出了最新的错误,我想说,这也不是一个适当的错误,因为它没有以任何方式描述可能的原因。
    • 总而言之,删除. csproj. user并将. csproj设置为如下所示的值应该可以工作。然后执行**
dotnet publish -f:net6.0-ios -c:Release

<Project Sdk="Microsoft.NET.Sdk">
    
        <PropertyGroup>
            <TargetFrameworks>net6.0-android;net6.0-ios;net6.0-maccatalyst</TargetFrameworks>
            <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net6.0-windows10.0.19041.0</TargetFrameworks>
            <!-- Uncomment to also build the tizen app. You will need to install tizen by following this: https://github.com/Samsung/Tizen.NET -->
            <!-- <TargetFrameworks>$(TargetFrameworks);net6.0-tizen</TargetFrameworks> -->
            <OutputType>Exe</OutputType>
            <RootNamespace>OnesieMobile</RootNamespace>
            <UseMaui>true</UseMaui>
            <SingleProject>true</SingleProject>
            <ImplicitUsings>enable</ImplicitUsings>
    
            <!-- Display name -->
            <ApplicationTitle>OnesieMobile</ApplicationTitle>
    
            <!-- App Identifier -->
            <ApplicationId>com.maui.app</ApplicationId>
            <ApplicationIdGuid>447A62C6-2841-41D6-B9AE-444E6E1A908B</ApplicationIdGuid>
    
            <!-- Versions -->
            <ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>
            <ApplicationVersion>1</ApplicationVersion>
    
            <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">14.2</SupportedOSPlatformVersion>
            <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">14.0</SupportedOSPlatformVersion>
            <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">21.0</SupportedOSPlatformVersion>
            <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion>
            <TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion>
            <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'tizen'">6.5</SupportedOSPlatformVersion>
        </PropertyGroup>
        
        <PropertyGroup Condition="$(TargetFramework.Contains('-ios')) and '$(Configuration)' == 'Release'">
            <RuntimeIdentifier>ios-arm64</RuntimeIdentifier>
            <CodesignProvision>Maui Provisioning</CodesignProvision>
            <CodesignKey>Apple Distribution: My Name (XXXX)</CodesignKey>
    
            <ArchiveOnBuild>true</ArchiveOnBuild>
            <TcpPort>58181</TcpPort>
            <ServerAddress>xxxxx</ServerAddress>
            <ServerUser>xxxx</ServerUser>
            <ServerPassword>xxxx</ServerPassword>
            <_DotNetRootRemoteDirectory>/Users/xxxx/Library/Caches/Xamarin/XMA/SDKs/dotnet/</_DotNetRootRemoteDirectory>
    
        </PropertyGroup>
   
    
    </Project>
eimct9ow

eimct9ow2#

说明请尝试通过安装MAUI check来检查您的Maui环境。MAUI Check是一个用于确定您的环境是否已准备好进行MAUI开发的工具。虽然您可以使用dot net CLI单独安装MAUI,但该工具可确保您拥有所有适当的工作负载,以构建目标环境等。它还将安装MAUI应用程序的任何必要模板。
第1步从终端打开命令提示符window.run以下命令:

网络工具安装-g Redth .NET.Maui.检查

步骤2安装MAUI Check后,从终端运行以下命令:

毛伊切克
此过程将在您的环境中安装以下依赖项:OpenJDK -用于为MAUI(Android、macOS、MacCatalyst、iOS和tvOS)构建Android、Android SDK和模拟器以及.NET SDK工作负载

第3步最后,在这一步中,让我们以WASM工具的另一个工作负载安装结束。您需要此工作负载是因为MAUI支持在MAUI应用中托管Blazor。从您的终端运行以下命令:

dotnet工作负载安装wasm-tools

**注意:**如果您已经安装了Xcode、OpenJDK和Android SDK的环境依赖项,您可以在终端中运行以下命令来安装必要的工作负载。

我希望这会有所帮助。

相关问题