【问题标题】:MSBuild force compile failure on missing project filesMSBuild 对缺少的项目文件强制编译失败
【发布时间】:2015-01-26 22:57:17
【问题描述】:

作为一名开发人员,我希望我的编译器(在本例中为 Visual Studio 中的 MSBuild)在包含磁盘上缺少的任何 csproj 项目中的文件时严重失败。在目睹从网站上意外删除 web.config 后,我萌生了这个想法。 MSBuild 可以在没有它的情况下愉快地编译(并且在持续集成中也会这样做,因为它也只运行 MSBuild)。

有没有办法强制 MSBuild 在构建成功之前检查解决方案的所有项目中引用的所有文件是否存在?将警告作为错误启用似乎并没有做到这一点。事实上,查看输出,我没有看到任何文件丢失的通知。我知道它会为标记为“编译”的项目文件标记丢失的文件,但是仅内容文件呢?

【问题讨论】:

    标签: c# .net visual-studio msbuild


    【解决方案1】:

    确实,如果将内容项设置为“请勿复制”,则它不会在 MSBuild 中导致错误甚至警告。但是,如果将其设置为“如果较新则复制”或将类型更改为“资源”(仍将其保留为“不复制”),则会触发错误。我能够将随机 .bak 文件设置为“资源”,而不会对我的构建产生不利影响。

    【讨论】:

    • Resource 是指Embedded Resource 吗?如果是这样,从技术上讲,这是否会增加生成的 DLL 的大小(但会略微增加)?此外,虽然这将涵盖web.config 的情况,但我宁愿寻找使所有文件默认抛出警告/错误的东西,而不是必须将每个文件标记为Resource。不过谢谢你的回答。目前,有总比没有好!
    • @Scott:有一个简单的“资源”选项(至少在 VS2013 中)。我认为您必须编辑 MSBuild 的操作以使其在默认情况下发出警告/错误。由于添加文件时必须将文件从“无”切换为“内容”,因此您可以将它们更改为“资源”。对于现有文件,您可以一次更改其所有类型。
    猜你喜欢
    • 2017-07-29
    • 2012-03-03
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多