2013-08-31 73 views
6

我正在尝试为我的团队设置全局规则。我们为C#项目使用VS2012和TFS。我想压制一些警告,并将一些警告视为错误。我找到了在项目级别上执行它的方法 - 项目属性 - >编译选项卡。解决方案级别的警告。将警告视为解决方案级别的错误

但是我们有超过一百个项目的解决方案,我正在寻找一些更简单的方法来在全球范围内设置这些规则。

+0

恐怕你有写一个宏,因为这些设置不保存在解决方案中。 – rene

+0

您可以对多个项目使用相同的规则集文件 - 我假设您已经这么做了,并且只是想避免在每个项目中手动指定该文件? –

+0

我刚开始深入研究这些事情。所以我必须说我不太确定。我认为规则集是为代码分析而定义的,它与编译器警告不同。到目前为止,我没有触及规则集... – jumbo

回答

5

解决方案只是一个项目(很笨)的容器。如果你在文本编辑器中打开它,你很快就会看到你不能扩展它,只能添加项目/项目。

你想要的是一个或多个常见的msbuild文件,它指定了编译器/链接器/所使用的任何工具的所有必需选项,并且它在每个单独的项目中都可以使用Import。我们已经使用了很多年了,非常方便(虽然方便的一部分可能是我们也写了一个小工具来生成项目文件来自动导入全局属性,所以我们不必手动混淆它们)

或者,您可以添加一台机器范围的文件,查看$(MSBuildToolsPath)\ Microsoft.CSharp.targets以查看放置这些文件的位置。我不打算在这里复制/粘贴内容,但第一行基本上检查是否有$(MSBuildExtensionsPath)\ $(MSBuildToolsVersion)\ $(MSBuildThisFile)\ ImportBefore中的用户定义的文件,如果是这样,他们是在所有常见的msbuild东西之前全部导入。同样,Microsoft.CSharp.targets的结尾包含类似的逻辑,用于在所有常见的msbuild东西之后导入文件。

+0

因此,我看到我将不得不编写一些脚本来更新所有项目文件(机器宽文件现在不是一个选项),我说得对吗? – jumbo

+0

确实似乎是唯一的方法(除了手动编辑所有文件);应该不是那么难:你需要做的就是在现有的' .. \ buildtools \ propertysheets \ C#\ default.targets“/>'行 - 我会建议使用一个实际的路径common.props – stijn

相关问题