我们的构建服务器花了太长时间来构建我们的一个C++项目.它使用Visual Studio 2008.有没有办法让devenv.com记录在解决方案中构建每个项目所花费的时间,以便我知道在哪里集中精力?
在这种情况下,改进的硬件不是一种选择.
我已经尝试设置输出详细程度(在工具/选项/项目和解决方案/构建和运行/ MSBuild项目构建输出详细程度下).这似乎在IDE中没有任何影响.
从命令行运行MSBuild时(对于Visual Studio 2008,它需要是MSBuild v3.5),它显示结束时经过的总时间,但不显示在IDE中.
我真的想要一个解决方案中每个项目的时间报告,以便我可以找出构建过程花费时间的地方.
或者,因为我们实际上使用NAnt来驱动构建过程(我们使用Jetbrains TeamCity),有没有办法让NAnt告诉我每一步所花费的时间?
如何获取内置MSBuild变量列表?
我需要知道如何确定当前项目的csproj名称,并认为知道我在MSBuild中可以找到的其他内容可能会有用.
如何获得T4模板以在每次构建时生成其输出?就像现在一样,它只在我对模板进行更改时才重新生成它.
我发现了类似的其他问题:
如何在Visual Studio中构建t4文件?(答案不够详细[虽然仍然很复杂]甚至没有完全意义)
必须有一个更简单的方法来做到这一点!
我的电脑上的visual studio 2012在"公共网站"中预览时收到以下错误消息.我需要重新启动VS以消除错误消息.
由于异常'指定条件'$(PackageAsSingleFile)"评估为"而不是布尔值,因此调用构建失败.C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets'
是什么原因造成的?
我有一个大的c#解决方案文件(~100个项目),我正在努力改善构建时间.我认为"复制本地"在很多情况下对我们来说都是浪费,但我想知道最佳做法.
在我们的.sln中,我们有应用程序A取决于程序集B,它取决于程序集C.在我们的例子中,有几十个"B"和一些"C".由于这些都包含在.sln中,我们正在使用项目引用.所有程序集当前都构建为$(SolutionDir)/ Debug(或Release).
默认情况下,Visual Studio将这些项目引用标记为"复制本地",这会导致每个"C"被复制到$(SolutionDir)/ Debug中,对于构建的每个"B".这似乎很浪费.如果我只关闭"复制本地",会出现什么问题?大型系统的其他人做什么?
跟进:
很多响应建议将构建分解为较小的.sln文件......在上面的示例中,我将首先构建基础类"C",然后是大量模块"B",然后是一些应用程序,"一个".在这个模型中,我需要对来自B的C进行非项目引用.我遇到的问题是"Debug"或"Release"被添加到提示路径中,我最终构建了我的Release版本的"B"反对"C"的调试版本.
对于那些将构建拆分为多个.sln文件的人,如何管理这个问题?
我在看看$(Configuration),$(ProjectDir)等在Visual Studio 2008的预生成事件.
是否存在所有这些变量的链接以及每个变量的定义?
我使用'Enable NuGet Package Restore'将最近的nuget包恢复功能添加到解决方案中:http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
然而,它打破了我的构建服务器,我没有时间来修复它,所以我想删除它.据我所知,没有选项,所以我从所有*.csproj文件中手动删除了以下行:
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
Run Code Online (Sandbox Code Playgroud)
现在的问题是,每次检查我的*.csproj文件或打开我的解决方案时,该行会自动再次添加,如果我不小心检查它就会破坏我的构建:(
我有什么想法可以永久删除它吗?
更新:尽管下面的答案仍然在打开解决方案时仍然会回来,任何有同样问题的人?
这是一个使用VS2015的WebApi项目.
重现步骤:
一切都工作正常,直到我将构建输出路径从"bin \"更改为"bin\Debug \"实际上,除"bin"之外的任何输出路径都不起作用.
还有一点是,只要我在"bin"中留下构建版本,就可以使用另一个输出路径到任何地方.
请帮助提供解决方案.我想这会在实际部署上造成成本问题.
我正在尝试使用MSBuild构建具有指定目标平台的解决方案(我需要二进制文件,x86和x64).这是我尝试的方式:
C:\WINDOWS\Microsoft.NET\Framework\v3.5>MsBuild SolutionPath\Solution.sln /t:Rebuild /p:Configuration=Release /p:Platform="x86"
Run Code Online (Sandbox Code Playgroud)
但是,如果平台与"任何CPU"不同,则构建始终会失败.我究竟做错了什么?
这是while输出MSBuild打印:
C:\ WINDOWS\Microsoft.NET\Framework\v3.5> MsBuild SolutionPath\Solution.sln/t:Rebuild/p:Configuration = Release/p:Platform ="x86"Microsoft(R)Build Engine Version 3.5.30729.1 [ Microsoft .NET Framework,版本2.0.50727.3082]版权所有(C)Microsoft Corporation 2007.保留所有权利.
建立于2010年7月1日8:28:10开始.在节点0上项目"SolutionPath\Solution.sln"(重建目标t(s)).SolutionPath\Solution.sln:错误MSB4126:指定的解决方案配置"Release | x86"无效.请使用"配置和平台"属性指定有效的解决方案配置(例如,MSBuild.exe Solution.sln/p:Configuration = Debug/p:Platform ="Any CPU")或将这些属性留空以使用默认解决方案配置.完成构建项目"SolutionPath\Solution.sln"(重建目标) - 失败.
建立失败.
"SolutionPath\Solution.sln"(重建目标)(1) - >(ValidateSolutionConfiguration target) - > SolutionPath\Solution.sln:错误MSB4126:指定的解析配置"Release | x86"无效.请使用Configuration和Platform属性指定有效的解决方案配置(例如MSBuild.ex e Solution.sln/p:Configuration = Debug/p:Platform ="Any CPU")或将这些专业保留为空以使用默认解决方案配置.
Run Code Online (Sandbox Code Playgroud)0 Warning(s) 1 Error(s)时间流逝00:00:00.03
如果我尝试使用devenv为x86/x64构建它,它可以很好地工作,但是我正在尝试设置构建服务器而不安装所有必需的Visual Studio版本.顺便说一句,如果有一个更好的免费工具(支持.NET框架4),我很乐意听到它.
msbuild ×10
.net ×2
c# ×2
asp.net ×1
automation ×1
nant ×1
nuget ×1
t4 ×1
tfs ×1
visual-c++ ×1
visual-c++-6 ×1