我有一个解决方案,它在运行 Visual Studio 2015 时构建良好,但是当我从命令行运行时,我遇到了错误
错误 CS1056:此行出现意外字符“$”
var CutOffTextFragment = deadLineTime.Deadline.Minute == 0 ? $"{deadLineTime.Deadline:htt}" : $"{deadLineTime.Deadline:h:mmtt}"
deadLineTime.Deadline 是一个 DateTime 对象,代码将返回 XAM/PM 或 X:XXAM/PM
我认为这是因为构建脚本没有使用 C#6。目前此脚本无法更改为使用 c# 6
如果是这种情况,任何人都可以帮我贬值代码,以便它适用于 C# 5
最佳答案
该功能是C#6的语法糖,尝试安装最新版本的框架4.6.2 https://www.microsoft.com/en-us/download/details.aspx?id=53345
然后转到您的项目属性并更改目标框架上的应用程序选项以指向最新的。您无需更改代码即可使用 string.Format 方法替换字符串插值来修复它。
如果您仍然收到此错误,是因为运行您的构建的编译器不是最新版本的 C#,请尝试从 Nuget 添加 Microsoft.Net.Compilers 并再次编译,这应该可以解决问题。如果您想避免安装此包,请尝试打开您的 .csproj 并查看应该指向版本 12 的 ToolsVersion,然后将其更改为 14,但请确保您已安装最新版本的 MSBuild来自 https://www.microsoft.com/en-us/download/details.aspx?id=48159
或者转到 C:\Program Files (x86)\MSBuild\14.0\Bin,在那里你应该有这个带有 csc.exe 编译器的文件夹。如果即使那样也不能解决问题,请尝试按照以下步骤操作 https://msdn.microsoft.com/en-us/library/bb383985.aspx .
根据我的经验,只需从 Nuget 获取软件包即可解决问题。
希望这可以帮助
关于c# - 项目使用 Visual Studio 构建良好,但从命令行失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41826517/