2015-01-26 43 views
3

作为一个开发者失败,我想我(在这种情况下的MSBuild在Visual Studio)编译器时,它包含任何csproj项目在磁盘上缺少一个文件失败得很惨。这个想法在我目睹网站意外删除web.config后出现在我身上。没有它,MSBuild会很高兴地进行编译(并且在持续集成中也会这样做,因为它也只是运行MSBuild)。的MSBuild力编译失踪项目文件

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

回答

1

确实出现如果一个内容项被设置为“不要复制”,那么它不会在MSBuild中导致错误甚至是警告。但是,如果您将其设置为“复制更新”或将类型更改为“资源”(仍然保持“不复制”),则会触发错误。我能够创建一个随机的.bak文件作为“资源”,对我的构建没有不利影响,我可以说。

+0

“资源”是指'嵌入式资源'吗?如果是这样,这在技术上不会增加​​生成的DLL的大小(无论如何略微)?另外,虽然这将覆盖'web.config'的情况,但我宁愿寻找一些使默认情况下所有文件都会抛出警告/错误的东西,而不是将每个文件都标记为“Resource”。不过谢谢你的回答。目前,它总比没有好! – Scott 2015-01-26 23:35:10

+1

@Scott:有一个简单的“资源”选项(至少在VS2013中)。我认为你必须编辑MSBuild的操作才能让它在默认情况下发出警告/错误。由于您在添加文件时必须将文件从“无”切换到“内容”,因此您可以将它们改为“资源”。对于现有文件,您可以一次更改所有类型。 – 2015-01-26 23:45:58