【发布时间】:2014-01-03 16:00:48
【问题描述】:
对于我们的应用程序,我们在构建过程中不使用 Visual Studio; Visual Studio 不在构建服务器上。一般来说,我们一直将 Visual Studio 作为开发应用程序的“必备工具”,但可重现构建的关键要求都是开源/免费提供的。
我现在正在考虑升级到 EF6。我不想签入生成的模型代码,所以我需要一种从 edmx 文件生成模型而不需要 Visual Studio 的方法。
之前,我们使用了 EdmGen,因为它是随 .NET 框架一起提供的,我们很高兴我们的构建服务器依赖于它。在 EF6 中,推荐的生成代码的方法是使用 T4 模板。
但是,T4 代码生成工具内置在 Visual Studio 中,不单独提供。
This question 包含部分答案。但是,这两个答案都存在问题。
首先,建议许可证允许您将必要的文件从 Visual Studio 安装复制到构建服务器。但是,这是一个丑陋的解决方案,因为这意味着无法自动设置新的构建服务器,并且取决于存在的 Visual Studio 安装。此外,对于 EF6 模型生成,我们还需要 Visual Studio 安装中的 EF.Utility.CS.ttinclude。我收到一封来自 Microsoft 开发人员的电子邮件,说在他的非法律意见中,我也可以复制该文件,但查看许可证,我不相信。
其次,更吸引人的是,MonoDevelop 中有 an open-source implementation of TextTransform。但是,同样,我们缺少该包含文件,此外,我不清楚这个 TextTransform 工具的工作方式是否完全相同,并且可以处理 EF6 给我的模板。到目前为止,我在尝试让它工作时遇到了错误。
那么:有没有人有一个不使用只能从 Visual Studio 安装中获得的工具来生成 EF6 模型的工作示例?
【问题讨论】:
-
解决方案:使用代码优先。
-
我不确定,但对于 ef 4/5,我们有一个相当短的步骤列表来设置构建服务器。其中一个涉及复制这些文件,但这没什么大不了的,而且 zip 已经准备好了。如果需要,我可以将它们自动化(我认为除了安装 vs 测试工具),但我看不到我们每 30 分钟启动一次构建服务器。
-
@HighCore:我不能使用 CodeFirst,因为这个项目早于 CodeFirst,到目前为止,我从 Edmx 文件迁移到 CodeFirst 类的所有调查似乎都是一项非常大量的工作,因为我们的模型尺寸。但是,是的,我同意 CodeFirst 是一种更理想的做事方式。
-
@AndrewBacker:问题是,我们还将源代码分发给我们的客户。当时的想法是,如果我们作为一家公司破产,他们已经拥有并拥有构建和运行应用程序所需的所有文件。如果这个 zip 文件变得必要,我该怎么处理它?我不能将它与其他所有东西一起保存在源存储库中,因为从法律上讲,这算作将它重新分发给我们的客户。我想我可以编写一个脚本,当在带有 Visual Studio 的机器上运行时,它会为您生成一个用于设置构建服务器的存档……但这不是一个很好的解决方案。
-
@Martin Edin:啊,我明白了。所以这并不是真正关于构建服务器,而是关于捆绑一个工具,以便他们可以在不依赖 VS 的情况下生成代码。构建服务器是一个很好的副作用。很酷。但是为什么你对包含 vs 工具输出感到过敏呢?我可以从哲学上理解......但我认为这不会是许可证问题。太糟糕了。我想知道自己的解决方案。然后让我们摆脱 VsTest :)
标签: c# mono monodevelop t4 entity-framework-6