dnu build,TeamCity:类型或命名空间名称' IConfiguration'无法找到

时间:2015-08-12 06:07:04

标签: teamcity asp.net-core

我一直在尝试使用PowerShell脚本将我的ASP.NET 5应用程序构建到UAT。

我的解决方案如下:

+---build
+---lib
|   +---MySubModule
+---src
|   +---Console
|   +---Data
|   +---Domain
|   +---Services
|   +---Web.UI
+---test
    +---Tests.Common
    +---Tests.Data

build-all.ps1脚本位于$/Build,看起来像

# Build all executable projects in this solution
$thisFolder = (Get-Item -Path ".\" -Verbose).FullName

$projectsToBuild = @(
    [System.IO.Path]::GetFullPath((Join-Path $thisFolder "..\test\Tests.Data"));
    [System.IO.Path]::GetFullPath((Join-Path $thisFolder "..\src\Console"));
    [System.IO.Path]::GetFullPath((Join-Path $thisFolder "..\src\Web.UI"));
)

foreach($project in $projectsToBuild) {
    dnu restore $project
    dnu build $project
}

该脚本适用于我的机器 TM ,但在TeamCity上失败,错误如

  

d:\数据\ TeamCity的\ Agent2 \工作\ 43f47b78be47a304 \测试\ Tests.Data \ MyAwesomeClass.cs(21,26):   DNX,版本= v4.5.1错误CS0246:类型或命名空间名称   ' IConfiguration'找不到(你错过了使用指令吗?   或汇编参考?)

dnu restore有效,我可以看到它解决路径与我的机器上的路径相同但TeamCity错误?

为什么建造神灵,你有没有想过我?

1 个答案:

答案 0 :(得分:1)

偶然地,我发现dnu restore对引用的项目没有递归工作。

我一直在假设我只能dnu restore三个可执行项目和Domain项目以及其他未指定的项目会自动恢复。它适用于dnu build,但结果证明这是一个不好的假设。

通过使用根文件夹修复每个项目的dnu restore,并允许dnu restore递归扫描project.json个文件。

在TeamCity中有效的修订build-all.ps1

dnu restore ../src
dnu restore ../test
dnu restore ../lib

$projectsToBuild = @(
    [System.IO.Path]::GetFullPath((Join-Path $thisFolder "..\test\Tests.Data"));
    [System.IO.Path]::GetFullPath((Join-Path $thisFolder "..\src\Console"));
    [System.IO.Path]::GetFullPath((Join-Path $thisFolder "..\src\Web.UI"));
)

foreach($project in $projectsToBuild) {
    dnu build $project
}

实际问题出现在dnu restore而非dnu build,正如我原先想的那样。

我认为脚本在我的本地工作的原因是Visual Studio自动恢复解决方案中项目的包。