gpt4 book ai didi

c# - 一种在构建时修改类(和通用程序集)数据的方法

转载 作者:太空宇宙 更新时间:2023-11-03 13:32:51 25 4
gpt4 key购买 nike

我想做的这件事可能甚至不值得做,但我认为它会很酷。

所以我想做的是让一些代码在我的项目构建时运行(不仅在编译时),并根据属性和一般代码分析等向我的类添加内容。我想要做的是拥有动态生成的字段/属性,这些字段/属性可通过智能感知使用,但在实际源代码中不可见。这样做的原因是我可能想要生成很多它们,并且将它们输出到源会很快变得一团糟。

像这样的系统的潜在可能性是向量调配之类的东西。

是否有某种类型的库可以让我插入生成代码?如果没有,最好的解决方法是什么?

最佳答案

这方面最明显的例子是由 Microsoft 为 XAML 文件完成的。在构建期间,为每个 XAML 文件创建一个 C# 源文件,并将其放置在 obj/Debugobj/Release 文件夹中。除此之外,定义相关任务的 MSBuild .targets 文件专门配置为告诉 Visual Studio 生成的文件是正确的 IntelliSense 支持所必需的,这意味着您实际上不必显式构建项目,以便 IntelliSense 允许在 XAML 中声明的项目在项目其他位置的 C# 代码中使用。

正是我在构建期间为 ANTLR 语法文件生成代码所使用的方法。您可以在此处查看包含构建任务程序集和自定义 .targets 文件的完整示例:
https://github.com/antlr/antlrcs/tree/master/AntlrBuildTask

您应该知道,某些 Visual Studio 的第 3rd 方扩展完全用它们自己的代码完成实现替换了 IntelliSense 支持。已知其中一些扩展不支持使用自定义代码生成器所需的 MSBuild IntelliSense 扩展功能。如果您在使用 IntelliSense 时遇到问题并且安装了任何扩展,您可能会发现删除扩展可以完全解决问题。

关于c# - 一种在构建时修改类(和通用程序集)数据的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19896805/

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