2015-08-19 113 views
2

我们有Visual Studio 2015企业RTM和一个MVC6 WebAPI预览项目编译对照beta 6 DNX SDK。问题建立Visual Studio 2015解决方案与TFS 2013

现在我们要在我们的TFS 2013服务器上构建这个项目。因为(我们认为)不幸构建失败不被恢复公测6包:

无法解析依赖Microsoft.AspNet.Mvc 6.0.0-beta6
无法解析的依赖Microsoft.AspNet.Server。 IIS 1.0.0-beta6
无法解析依赖关系Microsoft.AspNet.Server.WebListener 1.0.0-beta6
无法解析依赖关系Microsoft.AspNet.StaticFiles 1.0.0-beta6
无法解析依赖关系System.IdentityModel。令牌5.0.0-beta6-207211625
无法解析依赖关系Microsoft.AspNet.Authentication.OAuthBearer 1.0.0-beta6

我们在NuGet包恢复中甚至都没有看到任何生成日志的企图。

考虑以下步骤重现:

  • 我们安装了Visual Studio 2015年企业RTM我们构建服务器(我们需要完全升上的Visual Studio,因为我们在单元测试中使用假货),身份登录构建代理和配置的Visual Studio的TFS源代码控制设置,确保自动NuGet恢复被检查,确保安装了Visual Studio beta 6 SDK工具并安装beta 6 DNX(la'dnvm upgrade'命令)。

  • 接下来,我们在TFS创建一个新的构建使用TfvcTemplate.12.xaml模板,指定在高级 - >的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的分离有关,但我们不了解这个细微差别。

像往常一样,我敢肯定我们错过了秘密的关键一步,任何意见将不胜感激。

回答

2

原来有更多的秘密酱。 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 
相关问题