【问题标题】:How do I manage generated classes in a Visual Studio solution?如何在 Visual Studio 解决方案中管理生成的类?
【发布时间】:2010-11-30 12:46:45
【问题描述】:

我使用 CodeDom 编写了一个代码生成器,它从存储过程生成了许多类。我想将其执行添加为构建步骤,然后在构建时以编程方式将其所有类添加到解决方案中。

我该怎么做?

【问题讨论】:

    标签: visual-studio build-process code-generation


    【解决方案1】:

    使用Custom Build Providers

    Subsonic 还使用构建提供程序来生成其 DAL 和代码。请检查自定义构建提供程序的亚音速配置。它是开源的,你也可以检查它的实现。

    <configuration>
      <system.web>
        <compilation>
          <buildProviders>
            <add extension=".abp" type="SubSonic.BuildProvider, SubSonic"/>
          </buildProviders>
         </compilation>
      </system.web>
    </configuration>
    

    它使用 .abp 扩展文件来启动它的构建提供程序。

    编辑: 是的,自定义构建提供程序是 ASP.Net 的超级功能。但 传统的winform或其他 开发者可以使用 MSBuild 自定义 任务以获得相同的效果。迪诺 Esposito 提供了一篇很棒的文章 对于相同的。你可以检查一下 here.

    【讨论】:

    • 这很有趣!不过,这些自定义构建提供程序似乎只支持 Web 项目。我没看错吗?
    • 你是对的。自定义构建提供程序是 ASP.Net 的功能。但是您可以使用 MSBuild 自定义任务来获得相同的效果。请检查编辑我的答案。
    • 我最终将其作为自定义任务进行,这是部门的谈话内容。谢谢!
    【解决方案2】:

    我不知道这会如何工作,但这里是:

    如果您的 CodeDOM 代码是在单独的项目中生成的,请生成类,然后将文件名添加到库的 .csproj 文件(它只是 XML)中。也下令先建造。然后让库的预构建事件运行代码生成应用程序,然后它将编译。下次单击 VS 时,它会要求您重新加载,因为项目文件已更改并且您的新类应该会显示出来。

    这似乎有点 hacky,但只需编写一点脚本就可以实现自动化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 2012-11-24
      • 2013-10-15
      • 2019-10-16
      相关资源
      最近更新 更多