visual-studio-2015 - 使用 TFS 2013 构建 Visual Studio 2015 解决方案时遇到问题

标签 visual-studio-2015

我们有 Visual Studio 2015 Enterprise RTM 和针对 beta 6 DNX SDK 编译的 MVC6 WebAPI 预览项目。

现在我们想要在 TFS 2013 服务器上构建这个项目。不幸的是,构建失败了,因为(我们认为)beta 6 软件包没有被恢复:

Unable to resolve dependency Microsoft.AspNet.Mvc 6.0.0-beta6
Unable to resolve dependency Microsoft.AspNet.Server.IIS 1.0.0-beta6
Unable to resolve dependency Microsoft.AspNet.Server.WebListener 1.0.0-beta6
Unable to resolve dependency Microsoft.AspNet.StaticFiles 1.0.0-beta6
Unable to resolve dependency System.IdentityModel.Tokens 5.0.0-beta6-207211625
Unable to resolve dependency Microsoft.AspNet.Authentication.OAuthBearer 1.0.0-beta6

我们甚至在 NuGet 包恢复的构建日志中没有看到任何尝试。

请考虑以下重现步骤:

  • 我们在构建服务器上安装了 Visual Studio 2015 Enterprise RTM(我们需要完整的 Visual Studio,因为我们在单元测试中使用了假版本),以构建代理身份登录并配置了 Visual Studio 的 TFS 源代码控制设置,确保选中“自动 NuGet 还原”,确保安装了 Visual Studio beta 6 SDK 工具以及安装了 beta 6 DNX(“dnvm 升级”命令)。

  • 接下来,我们使用 TfvcTemplate.12.xaml 模板在 TFS 中创建一个新的构建,并在 Advanced->MSBuild 参数上指定“/p:VisualStudioVersion=14.0”开关,如 this article 中指定的那样。 .

  • 最后,当我们对构建进行排队时,构建失败并显示以下日志:

Build started 8/19/2015 8:51:09 AM.
     1>Project "C:\Builds\12\FunProjects\SPAFoundation\src\SPAFoundation.sln" on node 1 (default targets).
     1>ValidateSolutionConfiguration:
         Building solution configuration "Release|Any CPU".
     1>Project "C:\Builds\12\FunProjects\SPAFoundation\src\SPAFoundation.sln" (1) is building "C:\Builds\12\FunProjects\SPAFoundation\src\src\API\API.xproj" (2) on node 1 (default targets).
     2>PrepareForBuild:
         Creating directory "..\..\artifacts\obj\API\Release\".
       PreComputeCompileTypeScript:
         C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.5\tsc.exe --noEmitOnError  COMPUTE_PATHS_ONLY
       CompileTypeScript:
         C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.5\tsc.exe --noEmitOnError 
       CoreCompile:
         C:\Users\svctfsserver\.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta6\bin\dnx.exe --appbase "C:\Builds\12\FunProjects\SPAFoundation\src\src\API" "C:\Users\svctfsserver\.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta6\bin\lib\Microsoft.Framework.PackageManager\Microsoft.Framework.PackageManager.dll" pack "C:\Builds\12\FunProjects\SPAFoundation\src\src\API" --configuration Release --out "C:\Builds\12\FunProjects\SPAFoundation\bin"
         Microsoft .NET Development Utility CLR-x86-1.0.0-beta6-12256
         Building API for DNX,Version=v4.5.1
           Using Project dependency API 1.0.0
             Source: C:\Builds\12\FunProjects\SPAFoundation\src\src\API\project.json
           Unable to resolve dependency Microsoft.AspNet.Mvc 6.0.0-beta6
           Unable to resolve dependency Microsoft.AspNet.Server.IIS 1.0.0-beta6
           Unable to resolve dependency Microsoft.AspNet.Server.WebListener 1.0.0-beta6
           Unable to resolve dependency Microsoft.AspNet.StaticFiles 1.0.0-beta6
           Unable to resolve dependency System.IdentityModel.Tokens 5.0.0-beta6-207211625
           Unable to resolve dependency Microsoft.AspNet.Authentication.OAuthBearer 1.0.0-beta6
           Unable to resolve dependency Serilog.Framework.Logging 1.0.0-beta-43
           Unable to resolve dependency Unity 3.5.1404
.
.
.
         C:\Builds\12\FunProjects\SPAFoundation\src\src\API\project.json(6,29): error : The dependency Microsoft.AspNet.Mvc >= 6.0.0-beta6 could not be resolved. [C:\Builds\12\FunProjects\SPAFoundation\src\src\API\API.xproj]
         C:\Builds\12\FunProjects\SPAFoundation\src\src\API\project.json(7,36): error : The dependency Microsoft.AspNet.Server.IIS >= 1.0.0-beta6 could not be resolved. [C:\Builds\12\FunProjects\SPAFoundation\src\src\API\API.xproj]
         C:\Builds\12\FunProjects\SPAFoundation\src\src\API\project.json(8,44): error : The dependency Microsoft.AspNet.Server.WebListener >= 1.0.0-beta6 could not be resolved. [C:\Builds\12\FunProjects\SPAFoundation\src\src\API\API.xproj]
         C:\Builds\12\FunProjects\SPAFoundation\src\src\API\project.json(9,37): error : The dependency Microsoft.AspNet.StaticFiles >= 1.0.0-beta6 could not be resolved. [C:\Builds\12\FunProjects\SPAFoundation\src\src\API\API.xproj]
         C:\Builds\12\FunProjects\SPAFoundation\src\src\API\project.json(10,36): error : The dependency System.IdentityModel.Tokens >= 5.0.0-beta6-207211625 could not be resolved. [C:\Builds\12\FunProjects\SPAFoundation\src\src\API\API.xproj]
         C:\Builds\12\FunProjects\SPAFoundation\src\src\API\project.json(11,52): error : The dependency Microsoft.AspNet.Authentication.OAuthBearer >= 1.0.0-beta6 could not be resolved. [C:\Builds\12\FunProjects\SPAFoundation\src\src\API\API.xproj]
  • 最后一个难题是我们可以使用构建代理凭据远程访问 TFS 服务器。在 Visual Studio 2015 Enterprise RTM 中打开项目并毫无问题地构建它。显然,这与 MSBuild 和 Visual Studio 之间的分离有关,但我们不了解其中的细微差别。

像往常一样,我确信我们错过了 secret 武器中的一个关键步骤,任何建议将不胜感激。

最佳答案

原来还有更多秘方。 This article解释了具体要做什么 - 我们需要引导 DNX 环境并运行 DNU 来获取包。

总而言之,最终步骤是:

  • 向项目添加一个powershell脚本,我将其命名为InitializeDNXEnvironment.ps1,as described here :
# bootstrap DNVM into this session.
&{$Branch='dev';iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.ps1'))}

# load up the global.json so we can find the DNX version
$globalJson = Get-Content -Path $PSScriptRoot\global.json -Raw -ErrorAction Ignore | ConvertFrom-Json -ErrorAction Ignore

if($globalJson)
{
    $dnxVersion = $globalJson.sdk.version
}
else
{
    Write-Warning "Unable to locate global.json to determine using 'latest'"
    $dnxVersion = "latest"
}

# install DNX
# only installs the default (x86, clr) runtime of the framework.
# If you need additional architectures or runtimes you should add additional calls
# ex: & $env:USERPROFILE\.dnx\bin\dnvm install $dnxVersion -r coreclr
& $env:USERPROFILE\.dnx\bin\dnvm install $dnxVersion -Persistent

 # run DNU restore on all project.json files in the src folder including 2>1 to redirect stderr to stdout for badly behaved tools
Get-ChildItem -Path $PSScriptRoot -Filter project.json -Recurse | ForEach-Object { & dnu restore $_.FullName 2>1 }
  • 在 TFS 构建定义中,将此脚本添加到 Process..Advanced...预构建脚本路径下的“预构建脚本路径”,例如:
$/FunProjects/SPAFoundation/InitializeDNXEnvironment.ps1

关于visual-studio-2015 - 使用 TFS 2013 构建 Visual Studio 2015 解决方案时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32101244/

相关文章:

c# - 命名空间 "X"中不存在名称 "using:Y"

visual-studio-2015 - VS 无法识别项目依赖项

visual-studio-2008 - 使用 Visual Studio 2015 进行 Windows Mobile 6.5.3 开发

c - 尝试理解向 VS 项目添加文件的简单任务

c# - 如何对 Roslyn 诊断进行单元测试?

crash - 添加具有导航属性的实体对象作为数据源,导致 Visual Studio 2015 崩溃

c++ - MSBuild配置错误WDK 8.1 Visual Studio 2015构建内核模式驱动

c++ - 调试断言失败!表达式 : __acrt_first_block == header

c# - SSIS ForEach 来自变量枚举器,使用 C# 创建的列表 - 变量中的对象不包含枚举器

c# - 应用程序需要先在 GAC 中安装 log4net 程序集