.net Visual Studio苹果电脑:MAUI应用程序存档失败,出现三个错误

cyvaqqii  于 2023-01-14  发布在  .NET
关注(0)|答案(2)|浏览(383)

几天来我一直在尝试归档我的ios应用程序,我设置了资源调配和一切正常,但当我运行以下命令时:

sudo dotnet publish -f:net6.0-ios -c:Release -r ios-arm64 --self-contained

我得到三个错误:
错误NETSDK 1032:运行时标识符平台“ios-arm 64”和平台目标“x64”必须兼容。[/用户/julistolksdorf/项目/基于技能的/应用程序/基于技能的产品/基于技能的/基于技能的.csproj::TargetFramework=net6.0-ios]
“/project.assets.json”没有“net6.0-ios”的目标。请确保已运行还原,并且已将“net6.0-ios”包含在项目的TargetFrameworks中。
需要绑定标识符。请在项目文件中添加“ApplicationId”属性,或在项目的Info.plist文件中添加“CFBundleIdentifier”条目。
错误1我可以通过编辑csproj.user文件来省略

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <IsFirstTimeProjectOpen>False</IsFirstTimeProjectOpen>
    <ActiveDebugFramework>net6.0-ios</ActiveDebugFramework>
    <ActiveDebugProfile>iPhone 14 Pro Max iOS 16.1</ActiveDebugProfile>
    <SelectedPlatformGroup>Simulator</SelectedPlatformGroup>
    <DefaultDevice>iPhone 14 Pro Max iOS 16.1</DefaultDevice>
  </PropertyGroup>
  <PropertyGroup Condition="'$(TargetPlatformIdentifier)'=='iOS'">
    <RuntimeIdentifier>iossimulator-x64</RuntimeIdentifier>
    <PlatformTarget>x64</PlatformTarget>
  </PropertyGroup>
</Project>

然后取出x64。然后错误不再出现在存档上,但当我这样做时,我不能再在模拟器上构建我的应用程序。非常成功。
错误编号2我从来没有能够省略,什么是特别有线的是,它是谈论一个子项目(middleware.data),而不是主项目。我应该怎么做的信息?
而错误编号3只是愚蠢的;ofc我已在csproj文件中设置了包ID

<!-- App Identifier -->
<ApplicationId>com.skillbased.skillbasedapp</ApplicationId>
<ApplicationIdGuid>2041a417-5399-434b-95f8-83e997177fb7</ApplicationIdGuid>

为什么它这么恨我?
我在Visual Studio Mac上运行此程序
我真的需要你的帮助!

kse8i1jr

kse8i1jr1#

首先,目前仅支持通过.NET command line interface发布应用。要发布应用,请打开终端并导航到. NET MAUI应用项目所在的文件夹。运行dotnet publish命令(如下所示)创建.ipa

dotnet publish -f:net6.0-ios -c:Release /p:ArchiveOnBuild=true /p:_DotNetRootRemoteDirectory=/Users/{macOS username}/Library/Caches/Xamarin/XMA/SDKs/dotnet/

详细信息请参见发布。
其次,当您使用其预配配置文件设置iOS应用时,它应生成如下所示的属性组:

<PropertyGroup Condition="'$(IsPublishing)'  == 'true' And '$(TargetFramework)' == 'net6.0-ios'">
  <RuntimeIdentifier>ios-arm64</RuntimeIdentifier>
  <CodesignKey>iPhone Distribution: John Smith (AY2GDE9QM7)</CodesignKey>
  <CodesignProvision>MyMauiApp</CodesignProvision>
  <ArchiveOnBuild>true</ArchiveOnBuild>
</PropertyGroup>

最后但并非最不重要的是,您需要将以下内容添加到Info.plist文件中。

<key>CFBundleIdentifier</key>
<string>com.skillbased.skillbasedapp</string>

有关更多详细信息,您可以浏览Publish a .NET MAUI app for iOSSuggested update to the MAUI Docs on publishing
希望对你有用。

q5lcpyga

q5lcpyga2#

好吧,过了很多个月我终于明白了:
首先,如果你的repo中有一个子项目,把目标框架从FRAMEWORK改为FRAMEWORKS(带s),然后把目标也改为ios,当你设置项目时,这是不自动包括的,这让人困惑:

<TargetFrameworks>net6.0-ios</TargetFrameworks>

现在,bundle ID错误是一个假错误。即使你设置正确,错误也会显示,忽略它。
接下来,转到您的项目并完全删除csproj.user文件,同时从repo和子解决方案(如果有的话)中删除所有bin和obj文件夹。
现在进入有趣的部分,资源调配失败:确保在你的钥匙链中只有一个有效的证书用于你的项目。即使它们有不同的名称,也可能会混淆你的Mac,因此找不到正确的证书。
它应该是这样的:

如果它看起来有任何不同,或者说它不受信任,它也会失败。不要单击证书并将其置于“始终信任”。它必须使用应用程序默认值。
如果它不是自动信任的,请将其删除并创建一个新的。
然后确保您还安装了这些证书:

如果您还没有,请在此处下载:
https://www.apple.com/certificateauthority/
下载所有从现在起一年后到期的。(世界范围的)不应该超过4。
双击它们,它们就会显示在你的钥匙链上。
如果您的证书以前无效,现在将显示为有效。
现在尝试使用已安装的配置文件和发布配置构建应用程序。这将最终提示您输入钥匙串的密码。
如果输入正确,您最终可以使用以下内容构建应用:

dotnet publish -f:net6.0-ios -c:Release -r ios-arm64 --self-contained

请勿使用SUDO。
就这样。很简单吧?

相关问题