2017-06-06 38 views
9

我在我的代碼中使用使用$的字符串插值。它編譯的很好,但是當我檢查我的代碼時,構建服務器會引發錯誤BC30037: Character is not valid。以下是我如何使用字符串插值的示例:

dim r = New RadNode($"{acq.FormNo} - ${CInt(acq.TotalAmount)}", icon:=RadTreeIcons.RedTriangle) 

構建服務器安裝了Visual Studio 2015企業版。

如果我從命令提示運行此:

C:\Program Files (x86)\MSBuild\14.0\Bin>MSBuild /tv:14.0 "Proj.sln",代碼編譯的文件。但是,如果我改變上述參數

C:\Program Files (x86)\MSBuild\14.0\Bin>MSBuild /tv:12.0 "Proj.sln",我得到了同樣的錯誤

我也取得了這些變化:

我已經設置了MSBuildArguments物業/p:VisualStudioVersion=14.0,也改變了TFSBuild.proj文件,並更改這行到<Project DefaultTargets="DesktopBuild" xmlns="schemas.microsoft.com/developer/msbuild/2003"; ToolsVersion="14.0">"但同樣的問題正在發生。

更改(web vbproj)文件並將工具集版本從12.0更改爲14.0。其他vb項目的部分解決方案仍然是針對12.0,但作爲web vb項目的一部分在dll中編譯。

+0

您正在使用哪種構建? XAML或vNext構建?您可以添加更多詳細信息以進行故障排除,例如詳細日誌和您的環境。 –

+0

我正在使用XAML構建。 – Baahubali

+1

Hey @ Patrick-MSFT XAML使用什麼版本的msbuild來構建,您可以如何在vNext構建中設置版本?我記得VS中的構建配置對話框有一堆msbuild的設置,但我不記得是否有一種方法來設置TFSBuild用來設置msbuild運行的路徑......在這種情況下可能會出現這種情況實例? –

回答

6

答設在這裏解決我的問題人物:

BuildActivity ignores ToolsVersion

對於我們這些沒有生存的人e每天構建模板下面是讓它爲我工作的步驟:

首先找到與您的構建相關聯的模板(如果您已經知道在哪裏可以找到它,請跳過幾個步驟)。

只需右鍵單擊構建定義並選擇編輯構建定義 選擇處理選項卡,您將看到模板的名稱(很可能是DefaultTemplate,如果您尚未定製它的話)。在最右側單擊顯示詳細信息以查看模板的路徑。

enter image description here

進入主頁選項卡下的團隊資源管理器,然後單擊源代碼控制管理 enter image description here

找到模板文件並雙擊編輯它。它應該像這樣在圖形視圖中出現。滾動,直到你找到項目 enter image description here

點擊此項目時會立即彈出的屬性 enter image description here

點擊右側的小圖標運行的MSBuild - 不要試圖在鍵入它,因爲它」可能會爆炸並使Visual Studio崩潰。 輸入引號下面的 「C:\ Program Files文件(x86)的\的MSBuild \ 14.0 \ BIN」 enter image description here

現在最重要的部分

對我來說,運行的MSBuild項目是在兩個地方。

所以我只是在兩個地方重複上述步驟,然後在檢入.xaml文件後,我的構建最終工作正常。

您可能需要從TFS工具內回收代理/控制器。

enter image description here

2

when i check in my code, the build server throws an error,似乎你正在使用CI構建。您也可以嘗試手動排隊構建。如果與您的TFS環境相關,則在本地構建您的代碼以縮小範圍。

如果還有一些有用的信息,請查看構建代理/服務器中的事件視圖。

錯誤BC30037: Character is not valid沒有TFxxxx可能與您的代碼或語法有關。

  • 檢查是否有意外插入到編程元素中的額外字符。
  • 檢查編程元素的拼寫或構造僅使用有效期爲那種元素的

Character is not valid

+1

調查更多,看起來像構建服務器使用MsBuild 12或更早版本來執行構建,而您的msbuild版本14.0或更高版本來正確構建字符串插值。我將MSBuildArguments屬性設置爲/p:VisualStudioVersion=14.0,並更改了TFSBuild.proj文件並將此行更改爲「」但同樣的問題正在發生。 – Baahubali

+0

@Bahahubali對不起,以後的答覆。這是TFS XAML構建中的一個老問題。在構建.net4.6/c#6.0時,流程模板始終指向錯誤的msbuild版本12.0,而不是14.0。這個問題有很多解決方案。如https://stackoverflow.com/questions/32659106/tfs-2013-building-net-4-6-c-sharp-6-0/32691755#32691755。似乎你的問題已經解決。很高興,當你自己修復時總是更好;因爲你知道它是如何工作的!:) –