我有一个在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
答案 0 :(得分:5)
该功能是针对C#6的语法糖,尝试安装最新版本的框架4.6.2 https://www.microsoft.com/en-us/download/details.aspx?id=53345
然后转到Project属性并更改Target框架上的Application选项以指向最新版本。您无需更改代码以使用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获得包解决了这个问题。 希望这有帮助
答案 1 :(得分:0)
$可以转换为string.format。
var CutOffTextFragment = deadLineTime.Deadline.Minute == 0
?
string.Format("{0:htt}",deadLineTime.Deadline)
:
string.Format("{0:h:mmtt}", deadLineTime.Deadline);
答案 2 :(得分:-3)
$"{deadLineTime.Deadline:htt}"
是
的语法糖string.Format("{0:htt}", deadline.Deadline);
同样适用于
$"{deadLineTime.Deadline:h:mmtt}"
作为
string.Format("{0:h:mmtt}", deadline.Deadline);
尝试替换它们