我目前正在通过命令行构建Xamarmin iOS项目:

MSBuild "C:\code\MyProject.iOS.csproj" /t:Build /p:Configuration=Ad-Hoc;Platform=iPhone;ServerAddress=MACIP;ServerUser=MACUSER

失败并显示以下错误:

未为项目“MyProject.iOS.csproj”设置OutputPath属性。
请检查以确保您指定了有效的组合
该项目的配置和平台。

但是,当我检查CSPROJ时,有一个OutputPath集。

ios - Xamarin iOS MSBuild-缺少OutputPath吗?-LMLPHP

我可以通过在命令行中强制使用“OutputPath”参数来解决此问题:
OutputPath="C:\builds\xamarin\cellar-ios"

注意: OutputPath="C:\builds\xamarin\cellar-ios\"不起作用,构建失败(注意,反斜杠结束)

但是,这会创建一个奇怪的文件夹结构,在其中添加文件名:

ios - Xamarin iOS MSBuild-缺少OutputPath吗?-LMLPHP

关于我在这里做错了什么的想法?我觉得设置非常接近!

编辑

使用以下参数,我可以使其正常工作。注意,我仍然必须手动添加OutputPath,但这暂时可以解决这个问题。
/t:Build /p:Configuration=Ad-Hoc;Platform=iPhone;ServerAddress=SERVER_IP;ServerUser=USER;ServerPassword=PASS;OutputPath=bin\iPhone\Ad-Hoc\

最佳答案

对于您的.csproj的任何自定义OutputPath,应该由xbuild/msbuild中的.csproj拾取它或作为属性提供。

可以自定义IPA的输出路径的一件事是使用自定义MSBuild目标将IPA复制到您选择的文件夹中(如果需要,可以使用移动任务):

即(在您的.csproj内部):

<PropertyGroup>
    <CreateIpaDependsOn>
        $(CreateIpaDependsOn);
        CopyIpa
    </CreateIpaDependsOn>
</PropertyGroup>

<Target Name="CopyIpa"
    Condition="'$(OutputType)' == 'Exe'
        And '$(ComputedPlatform)' == 'iPhone'
        And '$(BuildIpa)' == 'true'">
    <Copy
        SourceFiles="$(IpaPackagePath)"
        DestinationFolder="$(OutputPath)"
    />
</Target>

然后,将DestinationFolder设置为所需的输出文件夹。

这可以在我们的知识库文章中找到:https://kb.xamarin.com/customer/portal/articles/2061038-can-i-change-the-output-path-of-the-ipa-file-

08-04 06:33