使用 CakeBuild 构建 Xamarin.Android 项目时找不到 mscorlib
Posted
技术标签:
【中文标题】使用 CakeBuild 构建 Xamarin.Android 项目时找不到 mscorlib【英文标题】:mscorlib not found when building Xamarin.Android project with CakeBuild 【发布时间】:2018-08-29 10:51:33 【问题描述】:我正在将 Xamarin android 项目集成到我们的 CI 管道中。我们已经将 CakeBuild 用于其他 .NET 项目,所以我也想在这里使用它。
问题是我在尝试使用 Cake 构建时总是收到以下错误消息:
C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(406,2):错误:无法加载程序集 'mscorlib,版本 = 0.0.0.0,文化 = 中性,PublicKeyToken ='。也许它在 Mono for Android 配置文件中不存在? [C:\[myproject].csproj]
在 Visual Studio 2015 中构建工作并使用 Visual Studio 开发人员命令提示符。因此,我认为这与在 VS 中设置的环境变量以及通过 VS 命令提示符设置的环境变量有关。所以我做的是制作一个小批量文件:
call "%vs140comntools%vsvars32.bat"
Powershell.exe ./build.ps1 -Target Build
但我得到了完全相同的错误。在我的项目中,没有明确引用mscorlib
。
Cake 构建任务如下所示:
Task("Build")
.IsDependentOn("Restore-NuGet-Packages")
.Does(() =>
var settings = new MSBuildSettings()
ArgumentCustomization = args =>
args = args.Append("/t:PackageForAndroid");
args = args.Append("/p:TargetFrameworkRootPath=\"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\"");
return args;
,
Verbosity = Verbosity.Normal
;
settings.SetConfiguration(configuration);
MSBuild("../myproject.csproj", settings);
);
我必须添加TargetFrameworkRootPath
,因为如果我不明确设置它,它将找不到引用程序集。
我想知道要复制VS / VS命令提示符的构建环境,还要做什么。
【问题讨论】:
【参考方案1】:您的目标是 .NET Standard 还是仍在使用 PCL? 详细输出是什么样的?它应该为您提供正在执行的确切 MSBuild 命令。
call "%vs140comntools%vsvars32.bat"
Powershell.exe ./build.ps1 -Target Build -Verbosity Diagnostic
【讨论】:
以上是关于使用 CakeBuild 构建 Xamarin.Android 项目时找不到 mscorlib的主要内容,如果未能解决你的问题,请参考以下文章
cake-build -.Net Core 跨平台构建自动化系统。