使用CakeBuild构建Xamarin.Android项目时找不到mscorlib

时间:2018-03-20 14:48:22

标签: c# android xamarin msbuild cakebuild

我正在将Xamarin Android项目集成到我们的CI管道中。我们已经将CakeBuild用于其他.NET项目,所以我也想在这里使用它。

问题是,在尝试使用Cake进行构建时,我总是收到以下错误消息:

  

C:\ Program Files(x86)\ MSBuild \ Xamarin \ Android \ Xamarin.Android.Common.targets(406,2):错误:无法加载程序集    'mscorlib,Version = 0.0.0.0,Culture = neutral,PublicKeyToken ='。也许它在Mono for Android配置文件中不存在? [C:\ [myproject的]的.csproj]

构建在Visual Studio 2015中工作并使用Visual Studio Developer命令提示符。因此,我认为它与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 个答案:

答案 0 :(得分:0)

您是针对.NET Standard还是仍在使用PCL? 详细输出是什么样的?它应该为您提供正在执行的MSBuild命令。

call "%vs140comntools%vsvars32.bat" Powershell.exe ./build.ps1 -Target Build -Verbosity Diagnostic