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

Visual studio 2015 使用TFS 2013构建Visual Studio 2015解决方案时遇到的问题,visual-studio-2015,Visual Studio 2015,我们有Visual Studio 2015 Enterprise RTM和一个针对beta 6 DNX SDK编译的MVC6 WebAPI预览项目 现在,我们希望在TFS 2013服务器上构建此项目。不幸的是,构建失败,因为(我们认为)beta 6软件包没有被恢复: 无法解析依赖项Microsoft.AspNet.Mvc 6.0.0-beta6 无法解析依赖项Microsoft.AspNet.Server.IIS 1.0.0-beta6 无法解析依赖项Microsoft.AspNet.Serve

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

现在,我们希望在TFS 2013服务器上构建此项目。不幸的是,构建失败,因为(我们认为)beta 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.Tokens 5.0.0-beta6-20721625
无法解析依赖项Microsoft.AspNet.Authentication.OAuthBearer 1.0.0-beta6

在NuGet包还原时,我们甚至没有在构建日志中看到任何尝试

考虑以下步骤来重现:

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

  • 接下来,我们使用TfvcTemplate.12.xaml模板在TFS中创建了一个新的内部版本,并在Advanced->MSBuild参数上指定了“/p:VisualStudioVersion=14.0”开关,如中所述

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

构建于2015年8月19日上午8:51:09开始。
1> 节点1上的项目“C:\Builds\12\FunProjects\SPAFoundation\src\SPAFoundation.sln”(默认目标)。
1> 验证解决方案配置:
构建解决方案配置“释放|任何CPU”。
1> 项目“C:\Builds\12\FunProjects\SPAFoundation\src\SPAFoundation.sln”(1)正在节点1(默认目标)上生成“C:\Builds\12\FunProjects\SPAFoundation\src\src\API\API.xproj”(2)。
2> PrepareForBuild:
正在创建目录“.\..\artifacts\obj\API\Release\”。
预计算CompileTypeScript:
C:\Program Files(x86)\Microsoft SDK\TypeScript\1.5\tsc.exe--仅限NOEMITONERRON计算路径
CompileTypeScript:
C:\Program Files(x86)\Microsoft SDK\TypeScript\1.5\tsc.exe--无错误
核心编译:
C:\Users\svctfserver\.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta6\bin\dnx.exe--appbase“C:\Builds\12\FunProjects\SPAFoundation\src\src\API”“C:\Users\svctfserver\.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta6\bin\lib\Microsoft.Framework.PackageManager\Microsoft.Framework.PackageManager.dll”PackageManager.dll“PackageManager”C:\Builds\12\FunProjects\SPAFoundation\spaffoundation\spaffoundation\src\src\spaf--配置发布--out“C:\Builds\12\FunProjects\SPAFoundation\bin”
Microsoft.NET开发实用程序CLR-x86-1.0.0-beta6-12256
为DNX构建API,版本=v4.5.1
使用项目依赖API 1.0.0
来源:C:\Builds\12\FunProjects\SPAFoundation\src\src\API\project.json
无法解析依赖项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.Tokens 5.0.0-beta6-20721625
无法解析依赖项Microsoft.AspNet.Authentication.OAuthBearer 1.0.0-beta6
无法解析依赖项Serilog.Framework.Logging 1.0.0-beta-43
无法解析依赖项Unity 3.5.1404
.
.
.
C:\Builds\12\FunProjects\SPAFoundation\src\src\API\project.json(6,29):错误:无法解析依赖项Microsoft.AspNet.Mvc>=6.0.0-beta6。[C:\Builds\12\FunProjects\SPAFoundation\src\src\API\API.xproj]
C:\Builds\12\FunProjects\SPAFoundation\src\src\API\project.json(7,36):错误:无法解析依赖项Microsoft.AspNet.Server.IIS>=1.0.0-beta6。[C:\Builds\12\FunProjects\SPAFoundation\src\src\API\API.xproj]
C:\Builds\12\FunProjects\SPAFoundation\src\src\API\project.json(8,44):错误:无法解析依赖项Microsoft.AspNet.Server.WebListener>=1.0.0-beta6。[C:\Builds\12\FunProjects\SPAFoundation\src\src\API\API.xproj]
C:\Builds\12\FunProjects\SPAFoundation\src\src\API\project.json(9,37):错误:无法解析依赖项Microsoft.AspNet.StaticFiles>=1.0.0-beta6。[C:\Builds\12\FunProjects\SPAFoundation\src\src\API\API.xproj]
C:\Builds\12\FunProjects\SPAFoundation\src\src\API\project.json(10,36):错误:无法解析依赖项System.IdentityModel.Tokens>=5.0.0-beta6-20721625。[C:\Builds\12\FunProjects\SPAFoundation\src\src\API\API.xproj]
C:\Builds\12\FunProjects\SPAFoundation\src\src\API\project.json(11,52):错误:无法解析依赖项Microsoft.AspNet.Authentication.OAuthBearner>=1.0.0-beta6。[C:\Builds\12\FunProjects\SPAFoundation\src\src\API\API.xproj]
  • 最后一个难题是,我们可以使用构建代理凭据远程访问TFS服务器。在Visual Studio 2015 Enterprise RTM中打开该项目,并毫无问题地构建它。显然,这与MSBuild和VisualStudio之间的分离有关,但我们不理解其中的细微差别

像往常一样,我确信我们在秘密酱汁中错过了一个关键步骤,任何建议都将不胜感激。

事实证明还有更多的秘密酱汁。解释了具体要做什么-我们需要引导DNX环境并运行DNU来获取包

总之,最后的步骤是:

  • 将powershell脚本添加到项目中,我称之为mine InitializeDNXEnvironment.ps1:
#将DNVM引导到此会话。
&{$Branch='dev';iex((