TFS 2015 Build以错误的顺序构建解决方案及其项目(ASP.NET Core Framework 4.6.1)

TFS 2015 Build以错误的顺序构建解决方案及其项目(ASP.NET Core Framework 4.6.1),asp.net,tfs,msbuild,.net-core,Asp.net,Tfs,Msbuild,.net Core,我有以下结构的Asp.Net core(Framework 4.6.1)解决方案: API sln |--WebApi.Project_1 |-- Project_2 (Core library, referencing Framework 4.6.1) references Project_4 (Core Library, referencing Framework 4.6.1) |-- Project_3 (Core library, re

我有以下结构的Asp.Net core(Framework 4.6.1)解决方案:

API sln

|--WebApi.Project_1

     |-- Project_2 (Core library, referencing Framework 4.6.1)
                references Project_4 (Core Library, referencing Framework 4.6.1)
     |-- Project_3 (Core library, referencing Framework 4.6.1)
                 references Project_4 (Core Library, referencing Framework 4.6.1)
请参阅下面的“净化”project.json文件

一些注意事项:

•有许多经典(4.6.1.net)库添加到解决方案中,但尚未被任何其他核心项目引用

•我创建了核心库,并从其json文件手动引用了.net framework 4.6.1

•他们使用x86平台,在project.json->buildOptions中指定

通过使用VisualStudio 2015(在我的本地计算机上或在同一构建代理服务器上本地),一切都已构建并正常运行

解决方案生成在TFS 2015生成引擎的CI生成中生成时失败,错误如下:

“C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Common.Targets(265,5):错误:D:\tfsAgent\u work\folder\folder\Project\u 2\Error CS0006:找不到元数据文件“\folder\folder\bin\debug\net461\Project\u 4.dll”

同样的错误,但对于项目3,也引用项目4

通过查看构建日志,我看到项目4是在项目2和项目3之后构建的,因此该文件还不存在

我尝试了不同的选择:

•在project.json中添加引用

•使用项目参考资料

•解决方案属性->项目相关性

•在API.sln文件中手动重新排序项目

没有区别

**WebApi_Project_1.json:**

 {
  "dependencies": {
    "Project_2": "1.0.0-*",
    "Project_3": "1.0.0-*",
    "Microsoft.AspNetCore.Mvc": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "System.Net.Http": "4.1.0"
  },

 "tools": {
     "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
   },

   "frameworks": {
      "net461": {}
   },

   "buildOptions": {
     "emitEntryPoint": true,
     "preserveCompilationContext": true,
     "platform": "x86",
     "copyToOutput": {
       "include": [
         "Folder/Folder/Folder/*.xsd",
         "Folder/Folder/Folder/*.xml"
       ]
     }
   },

   "publishOptions": {
     "include": [
       "wwwroot",
       "Views",
       "Areas/**/Views",
       "appsettings.json",
       "web.config"
     ]
   },

   "scripts": {
     "postpublish": [ "dotnet publish-iis --publish-folder %     publish:OutputPath% --framework %publish:FullTargetFramework%" ]
   }
 }


 **Project_2.json**

 {
   "dependencies": {
     "Project_4": "1.0.0.0"
   },

   "buildOptions": {"platform": "x86"},

   "frameworks": {
     "net461": {}
     }

   }


**Project_3.json**
{

  "buildOptions": { "platform": "x86" },

  "dependencies": {

    "Project_4": "1.0.0.0"

  },

   "frameworks": {
    "net461": {
      "frameworkAssemblies": {
        "System.Xml": "4.0.0.0"
      }
    }
  }
}


**Project_4.json**

{
  "version": "1.0.0.0",
  "buildOptions": { "platform": "x86" },
  "frameworks": {
    "net461": {}
  }
}

您使用XAML构建还是vNext构建?你的构建定义怎么样?尝试在生成代理计算机上使用MSBuild命令行在生成代理的源目录中生成解决方案,以查看将得到什么结果。我无法重现您的问题,请发布详细日志。感谢您的努力,Cece。通过将TFS中“Visual Studio Build Task”的MSBuild参数从“/t:Rebuild”更改为“/t:Build”,我成功地使其工作。然后它成功了。起初我担心它可能使用了库的一个旧实例,但经过多次检查(包括日志中的构建顺序),我现在确定它工作正常,构建顺序正确。没有解释为什么会发生这种情况。您使用XAML构建还是vNext构建?你的构建定义怎么样?尝试在生成代理计算机上使用MSBuild命令行在生成代理的源目录中生成解决方案,以查看将得到什么结果。我无法重现您的问题,请发布详细日志。感谢您的努力,Cece。通过将TFS中“Visual Studio Build Task”的MSBuild参数从“/t:Rebuild”更改为“/t:Build”,我成功地使其工作。然后它成功了。起初我担心它可能使用了库的一个旧实例,但经过多次检查(包括日志中的构建顺序),我现在确定它工作正常,构建顺序正确。我无法解释为什么会发生这种情况。