蛋糕-实验开关编译错误
本文关键字:编译 错误 开关 实验 蛋糕 | 更新日期: 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.dll
和Mono.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);
});