Cake-Experimental Switch 编译错误
Cake -Experimental Switch Compile Error
我正在尝试使用 Cake-Plist 插件,但收到一条错误消息,指出动态尚未在正在使用的 Roslyn 版本中实现。然后从别人的建议中我被告知尝试 -Experimental 开关。使用开关时,我在尝试编译构建脚本时收到以下错误。
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?at=57add5a3364ad7fc5acdb660
我在 运行 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"
...
您可以使用反射而不是动态。不太优雅,但避免 .
The example可以这样写
#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);
});
我正在尝试使用 Cake-Plist 插件,但收到一条错误消息,指出动态尚未在正在使用的 Roslyn 版本中实现。然后从别人的建议中我被告知尝试 -Experimental 开关。使用开关时,我在尝试编译构建脚本时收到以下错误。
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?at=57add5a3364ad7fc5acdb660
我在 运行 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"
...
您可以使用反射而不是动态。不太优雅,但避免
The example可以这样写
#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);
});