【问题标题】:Building Xamarin.Forms iOS project from command line with msbuild使用 msbuild 从命令行构建 Xamarin.Forms iOS 项目
【发布时间】:2020-12-08 11:09:51
【问题描述】:

我正在尝试通过命令行直接在 macOS 上为 CI/CD 目的构建 Xamarin.Forms iOS 项目:

msbuild C4S_MobileApp.iOS/C4S_MobileApp.iOS.csproj /restore /p:Platform=iPhone /p:ArchiveOnBuild=true /p:Configuration="Release" /p:BuildProjectReferences="false"

问题是我避免使用/p:BuildProjectReferences="false" 重建的共享应用程序项目,并且找不到其 .dll:

CSC : error CS0006: Metadata file '/Users/c4s/Projects/c4s_refactored/c4s-refactored-mobile-app/C4S_MobileApp/bin/iPhone/Release/netstandard2.1/C4S.MobileApp.dll' could not be found [/Users/c4s/Projects/c4s_refactored/c4s-refactored-mobile-app/C4S_MobileApp.iOS/C4S_MobileApp.iOS.csproj]

MSBuild 假定 .dll 位于 C4S_MobileApp/bin/iPhone/Release/netstandard2.1/ 中,但它位于 C4S_MobileApp/bin/Release/netstandard2.1 中。一个丑陋的解决方案是将 C4S.MobileApp.dll 复制到该位置。没有/p:BuildProjectReferences="false" 的构建可以工作,因为msbuild 然后创建C4S_MobileApp/bin/iPhone/Release/netstandard2.1/C4S.MobileApp.dll

我在 msbuild 命令中添加了参数/p:AssemblySearchPaths="C4S_MobileApp/bin/Release/netstandard2.1",还在 Release|iPhone 配置下的 C4S_MobileApp.iOS.csproj 文件中添加了<AssemblySearchPaths>C4S_MobileApp/bin/Release/netstandard2.1;$(AssemblySearchPaths)</AssemblySearchPaths>,但似乎被 msbuild 忽略了。

文件夹结构:
c4s-refactored-mobile-app/
-> C4S_MobileApp/
-> C4S_MobileApp.iOS/

感谢您的帮助和建议。

【问题讨论】:

  • 您可以先在IDE中构建项目,检查是否存在一些问题(如配置或代码逻辑错误)。然后删除文件夹binobj 再试一次。
  • @LucasZhang-MSFT 感谢您的回答。我可以使用 Visual Studio for Mac 成功构建它。不幸的是,删除 bin 和 obj 文件夹并通过命令行构建后出现同样的错误。使用 IDE 构建不会创建 C4S_MobileApp/bin/iPhone/.... 所以他们在内部以某种方式处理路径,就像我试图实现的那样

标签: macos xamarin.forms xamarin.ios msbuild


【解决方案1】:

不幸的是,这是 Xamarin.iOS 中的一个错误:https://github.com/xamarin/xamarin-macios/issues/10308

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2010-09-27
    相关资源
    最近更新 更多