TFS 2015 Build以错误的顺序构建解决方案及其项目(ASP.NET Core Framework 4.6.1)
我有以下结构的Asp.Net core(Framework 4.6.1)解决方案: API sln |--WebApi.Project_1TFS 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
|-- 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”,我成功地使其工作。然后它成功了。起初我担心它可能使用了库的一个旧实例,但经过多次检查(包括日志中的构建顺序),我现在确定它工作正常,构建顺序正确。我无法解释为什么会发生这种情况。