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

ger*_*rmi 5 c# msbuild android xamarin 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
Run Code Online (Sandbox Code Playgroud)

但我得到了完全相同的错误.在我的项目中,没有明确的参考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);    
});
Run Code Online (Sandbox Code Playgroud)

我必须添加,TargetFrameworkRootPath因为如果我没有明确设置它将找不到引用程序集.

我想知道还有什么可以复制VS/VS命令提示符的构建环境.

小智 0

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

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