gpt4 book ai didi

c# - 基于跨项目代码文件的构建时代码验证和生成

转载 作者:太空狗 更新时间:2023-10-30 00:34:04 25 4
gpt4 key购买 nike

我正在寻找一种方法,让我在构建过程中使用 Visual Studio 2010(非 Express)和 MSBuild 验证代码和生成器代码。

背景验证:

我正在使用 WCF Web Api 编写 RESTful Web 服务。在表示 Web 服务的服务类中,我必须定义一个端点,另外将参数声明为普通测试。当端点声明中的参数名称与 C# 方法的参数不同时,我会收到一个错误 - 不幸的是,在访问 Web 服务时发生在运行时,而不是在编译时。因此,我认为将 Web 服务类作为此类缺陷的编译步骤的一部分进行分析会很好,当出现问题时返回错误。

示例:

[WebGet(UriTemplate = "Endpoint/{param1}/{param2}")]
public string MyMethod(string param1, string parameter2) {
// Accessing the web service now will result in an error,
// as there's no fitting method-parameter named "param2".
}

我还想执行一些命名规则,例如GET-方法必须以“Get”字样开头。我相信这将有助于服务在与多个同事合作时保持更易于维护。

背景生成:

我将在其他几个项目中使用此 REST Web 服务,因此我需要编写一个客户端来访问此服务。但我不想为每一个都写一个客户端,总是在服务发生变化时进行调整。我希望根据 Web 服务代码文件自动生成客户端。

以前的方法:

到目前为止,我尝试使用一个使用DTE接口(interface)的T4模板来解析代码文件并验证它,或者生成客户端。手动保存时,这在 Visual Studio 中运行良好,但将其集成到构建过程中却效果不佳,因为使用 MSBuild 时 Visual Studio 主机不可用。

欢迎任何建议。 :)

最佳答案

除了使用 DTE 或其他一些方法来解析 C# 代码之外,您还可以使用反射(使用 Reflection-Only 上下文)在编译后检查程序集。使用反射是一种更强大的解决方案,也可能更快(特别是如果您使用 Mono.Cecil 进行反射)。

对于 MSBuild 集成,我建议编写 custom MSBuild task - 与编写由 MSBuild 执行的命令行实用程序相比,它相当简单且更健壮/优雅。

关于c# - 基于跨项目代码文件的构建时代码验证和生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8973090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com