【发布时间】:2018-04-30 05:06:59
【问题描述】:
我在 .net 4.7.1 Web 解决方案中有一个 .net 标准 2.0 类库。
在本地构建解决方案工作正常,但是当 TFS 服务器构建解决方案时,它无法编译 .net 2.0 标准库。它在编译期间崩溃并抱怨 system.object 等未定义或导入。
这是一个运行旧 tfsbuild.proj 样式 xml 文件的 TFS 2015。 构建服务器是最新的 .net 4.7.1、最新的 .net core 2.0.3、最新的 Visual Studio、最新的构建工具。
我可以看到它生成了一个 csc.exe 命令来编译崩溃的 .net 标准 2.0 项目。如果我只是运行“dotnet build”,效果很好。
查看构建日志,我可以看到在 VS 或“dotnet build”中运行时的 CoreCompile 步骤包含一个“引用”任务参数,其中引用了 .net 标准 2 库。构建服务器运行构建时,CoreCompile 步骤中缺少此任务参数。
有没有人建议如何最好地继续在 tfs 服务器上获取 msbuild 以成功编译 .net 标准 2.0 项目?
我可以让 msbuild 生成必要的“参考”任务参数吗?
我最好的选择是关闭 .net 标准项目的自动构建并尝试使用“dotnet build”作为构建步骤手动完成所有操作,因为 dotnet build 正确识别了必要的引用?
【问题讨论】:
-
您在 TFS2015 上使用的是哪个构建系统?旧的 XAML 版本还是新的 vNext 版本?
-
@DanielMann - 从开始到当前构建的每个 TFS 版本都将 msbuild 用于 .net 项目。
-
@StingyJack TFS 2008 有一个构建系统,其中构建定义只是导入 TFS 特定目标的 MSBuild 文件(例如映射工作区和同步源代码)。这就是我所指的。该问题涉及运行
tfsbuild.proj文件,这是 TFS 2008 样式构建使用的约定。自 TFS 2010 引入 XAML 构建以来,该构建系统确实已被弃用,而 XAML 构建又被 TFS 2015 中引入的构建系统弃用。 -
我记得那很糟糕,但是 .net 的每个构建系统都将以 msbuild 为中心。
标签: tfs msbuild .net-standard-2.0