以编程方式编辑的解决方案和项目文件 - 但VS现在在构建期间跳过项目

时间:2016-05-17 16:25:38

标签: c# visual-studio msbuild

我的情况是我有很多部署环境;开发,集成,QA,UAT,预生产和实时 - 针对两个不同的位置......这导致需要针对此特定客户的每个解决方案中的每个项目设置12个单独的配置转换/构建配置。

正如您可以想象的那样,手动配置是一件痛苦的事情,特别是对于已从代码库中其他地方移植过的解决方案并且尚未包含这些解决方案(在解决方案级别添加构建配置并不是&# 39; t自动将它们传播到项目等。)

无论如何,我已经编写了一个小应用程序,通过执行以下操作自动执行此操作: - 编辑解决方案文件(.sln),将新的构建配置添加到SolutionConfigurationPlatforms和ProjectConfigurationPlatforms GlobalSections。 - 编辑每个项目文件(.csproj),添加:    - >每个构建配置的新PropertyGroup    - >每个构建配置的新配置转换元素,每个DependentUpon都是主.config文件 - 为每个项目中的每个构建配置创建物理web.XXX-YYY.config文件

我最初在这个过程中遇到了一些问题,因为编码在文件的原始版本和编辑版本等之间存在差异,但现在已经修复了。我遇到的问题是Visual Studio(2015)之后拒绝构建/重建/清理项目 - 而是给我" Skipped"消息。

我尝试使用Visual Studio命令提示符构建(使用msbuild),这样可以成功创建输出,但VS中仍然没有骰子。

我已经尝试过各种各样的方法来解决这个问题;删除.suo文件,删除bin和obj文件,我甚至尝试删除其中一个项目文件的所有编辑(并使用merge / compare确保它与它完全相同)是预编辑的,它仍然被Skipped。

如果我能看到某种日志来发现VS跳过项目的原因那么好,我可以继续的就是输出窗口中令人难以置信的非详细消息。

任何帮助非常感谢。 很高兴发布代码,编辑前后的文件示例等......

1 个答案:

答案 0 :(得分:0)

特别检查Visual Studio Solution propertiesConfiguration Properties -> Configuration页面。确保为您感兴趣的所有配置的每个项目设置Build复选框。通过表单顶部的组合框检查所有配置。

如果每个项目都设置为build,请尝试调整找到的MSBuild属性 Tools -> Options -> Projects and Solutions -> Build and Run

  1. maximum number of parallel project builds设置为 1 。这解决了VS无法正确适应构建顺序的问题。
  2. 确保On Run when projects are out of date设置为Always build
  3. MSBuild project build output verbosity设置为Diagnostic
  4. 如果您有c ++项目,请将MSBuild project build log file verbosity设置为Diagnostic
  5. 执行构建并检查Output -> Build窗口内容。

    尝试删除解决方案用户设置。从VS 2015开始,它们存储在名为 .vs 的隐藏文件夹中。这是对的,名字以点开头。该文件夹位于 .sln 文件附近。只需删除整个.vs文件夹。