验证解决方案中的 .csproj 文件
Validate .csproj files in solution
我希望能够在我的 .csproj
文件添加到解决方案时或在我们的 CI 构建服务器上构建它们时对其进行验证。
验证意味着检查,例如:
- 路径和项目文件名符合约定
- 程序集名称和命名空间符合命名约定
- 平台目标正确
- 输出路径正确(发布和调试)
- 警告级别正确并且警告被视为错误
- 项目中存在某些文件(
AssemblyInfo.cs
等)。
- 程序集已被正确引用
- 等等
另一个有用的功能是能够忽略某些项目,或者更好的是,能够定义项目分组,每个组都有自己的验证规则。
在我看来,这似乎是许多其他人必须遇到的问题,但是我还没有找到任何可以帮助简化或自动化此过程的工具。我想它可能是 StyleCop 或 FxCop 之类的东西。
是否存在这样的工具,或者我必须创建自己的自定义构建步骤吗?
(我也在使用 ReSharper,所以会考虑使用插件,尽管这可能会使构建服务器上的验证变得更加困难。)
据我所知,没有 tool to achieve this。这就是为什么我的同事编写了一个自定义工具来使用自定义规则验证器验证 .csproj
和 .vbproj
文件的原因。
有一些 类 可以检查项目文件,例如 Microsoft.Build.Evaluation.Project
(程序集 Microsoft.Build
)可能对您很方便。但是当您尝试解析解决方案文件时,它会变得很脏。我强烈建议您看看这个 question on Whosebug.
我所说的内部验证工具只是检查定义的规则(如 ToolsVersion
、TargetFrameworkVersion
、TargetCPU
、...)并绘制相应的输出一种格式,以便构建服务器可以解析消息并在违反重要规则时停止构建。
祝你好运!
我希望能够在我的 .csproj
文件添加到解决方案时或在我们的 CI 构建服务器上构建它们时对其进行验证。
验证意味着检查,例如:
- 路径和项目文件名符合约定
- 程序集名称和命名空间符合命名约定
- 平台目标正确
- 输出路径正确(发布和调试)
- 警告级别正确并且警告被视为错误
- 项目中存在某些文件(
AssemblyInfo.cs
等)。 - 程序集已被正确引用
- 等等
另一个有用的功能是能够忽略某些项目,或者更好的是,能够定义项目分组,每个组都有自己的验证规则。
在我看来,这似乎是许多其他人必须遇到的问题,但是我还没有找到任何可以帮助简化或自动化此过程的工具。我想它可能是 StyleCop 或 FxCop 之类的东西。
是否存在这样的工具,或者我必须创建自己的自定义构建步骤吗?
(我也在使用 ReSharper,所以会考虑使用插件,尽管这可能会使构建服务器上的验证变得更加困难。)
据我所知,没有 tool to achieve this。这就是为什么我的同事编写了一个自定义工具来使用自定义规则验证器验证 .csproj
和 .vbproj
文件的原因。
有一些 类 可以检查项目文件,例如 Microsoft.Build.Evaluation.Project
(程序集 Microsoft.Build
)可能对您很方便。但是当您尝试解析解决方案文件时,它会变得很脏。我强烈建议您看看这个 question on Whosebug.
我所说的内部验证工具只是检查定义的规则(如 ToolsVersion
、TargetFrameworkVersion
、TargetCPU
、...)并绘制相应的输出一种格式,以便构建服务器可以解析消息并在违反重要规则时停止构建。
祝你好运!