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