蛋糕-实验开关编译错误

本文关键字:编译 错误 开关 实验 蛋糕 | 更新日期: 2023-09-27 18:02:14

我正在尝试使用Cake-Plist插件,并收到一个错误,即正在使用的Roslyn版本尚未实现动态。然后从给别人的建议中,我被告知要尝试"实验开关"。当使用开关时,当它试图编译构建脚本时,我收到以下错误。

Error: Microsoft.CodeAnalysis.Scripting.CompilationErrorException: (2,1): error CS0656: Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create'
    at Microsoft.CodeAnalysis.Scripting.Script.CompilationError(DiagnosticBag diagnostics)
    at Microsoft.CodeAnalysis.Scripting.Script.GetExecutor(CancellationToken cancellationToken)
    at Microsoft.CodeAnalysis.Scripting.Script.Run(Object globals)
    at Microsoft.CodeAnalysis.Scripting.Script.Run(Object globals)
    at Cake.Scripting.Roslyn.Nightly.DefaultRoslynNightlyScriptSession.Execute(Script script)
    at Cake.Core.Scripting.ScriptRunner.Run(IScriptHost host, FilePath scriptPath, IDictionary`2 arguments)
    at Cake.Commands.BuildCommand.Execute(CakeOptions options)
    at Cake.CakeApplication.Run(CakeOptions options)
    at Cake.Program.Main()

有人知道是什么导致这个错误吗?

蛋糕-实验开关编译错误

需要在Microsoft.CSharp.dll中添加引用

#reference "Microsoft.CSharp.dll"

https://gitter.im/cake-build/cake?在= 57 add5a3364ad7fc5acdb660

我在Mac (OSX El Capitan)上运行时遇到了类似的问题。

我在Mac上找不到Microsoft.CSharp.dll(除了在我的MS Windows安装中),并且不想将它作为依赖项添加到我的一个项目中,只是为了让它在Mac上像这样构建。

我注意到,然而,Mono.CSharp.dll被下载到./tools/Cake文件夹。它的目的大致相同,所以我尝试用

引用它。

#r "Mono.CSharp.dll"

那也没用。但是当我把它改成

#r "./tools/Cake/Mono.CSharp.dll"

效果很好。

现在我需要做的就是确定它在哪个平台上运行,并使用正确的

#r "xxx.CSharp.dll"

您可以使用反射而不是动态。稍微不那么优雅,但避免了引用Microsoft.CSharp.dllMono.CSharp.dll的问题。

示例如下:

#addin "Cake.Plist"
Task("update-ios-version")
    .Does(() =>
    {
        var plist = File("./src/Demo/Info.plist");
        var data = DeserializePlist(plist);
        var itemPropertyInfo = data.GetType().GetProperty("Item");
        itemPropertyInfo.SetValue(data, gitVersion.AssemblySemVer, new[] { "CFBundleShortVersionString" });
        itemPropertyInfo.SetValue(data, gitVersion.FullSemVer, new[] { "CFBundleVersion" });
        SerializePlist(plist, data);
    });