2017-01-24 85 views
1

我通過Visual Studio 2015年運行,但是當我在命令行中運行我碰到了錯誤項目構建罰款與Visual Studio,但在命令行

錯誤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

+1

最好提供適當的參數來編譯,以便它採用C#6代碼,而不是更改代碼。 – dasblinkenlight

回答

0

$可以被轉換成的String.Format。

var CutOffTextFragment = deadLineTime.Deadline.Minute == 0 
         ? 
         string.Format("{0:htt}",deadLineTime.Deadline) 
         : 
         string.Format("{0:h:mmtt}", deadLineTime.Deadline); 
-1
$"{deadLineTime.Deadline:htt}" 

的工作原理是語法糖

string.Format("{0:htt}", deadline.Deadline); 

同樣它也適用於

$"{deadLineTime.Deadline:h:mmtt}" 

string.Format("{0:h:mmtt}", deadline.Deadline); 

試圖取代他們

4

這個功能是一個語法糖是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獲得軟件包解決了這個問題。 希望這可以幫助

+1

真的!只需添加'Microsoft.Net.Compilers' NuGet包爲我工作。 –

+0

工作完美!轉移到最新的框架來解決問題是一個很好的觀點。 – Spencer

相關問題