2017-06-06 113 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。似乎你的问题已经解决。很高兴,当你自己修复时总是更好;因为你知道它是如何工作的!:) –