在我的自动NAnt构建中,我们有一个步骤,它在数据库之外生成大量代码(使用SubSonic),代码被分隔到与数据库中的模式名称相匹配的文件夹中。例如:
- /abc
- Customer.cs
- Order.cs
模式名称用于隔离应用程序所需的生成类。例如,有一个ABC应用程序,它将从这个中央文件夹中提取生成的代码。我是在做建筑前的活动,就像这样:
del /F /Q $(ProjectDir)Entities\generated*.cs
复制$(ProjectDir).\生成-代码\abc*..cs $(ProjectDir)Entities\generated*.cs
因此,在每次构建时,Nant脚本运行生成器,将所有代码放入一个中央保存位置,然后启动解决方案构建.它包括每个需要生成类的项目的预构建事件。
我看到的摩擦是这样的:
1)每个新的应用程序都需要设置这个预构建事件。不得不这么做真是糟透了。
2)在我们的构建服务器中,我们不生成代码,因此实际上在每个命令之前都有一个IF $(ConfigurationName) == "Debug“,所以在发布版本时不会发生这种情况。
3)有时命令失败,导致本地构建失败。如果:-还没有生成的代码(只是设置一个新项目,还没有数据库)-目录中没有现有的代码(第一次构建),它就会失败。
通常这些都是小的修正,我们刚刚黑了我们的方式来获得一个新的项目或一个新的机器与构建一起运行,但它阻止了我从我的1点击构建涅槃。
所以我想听听关于如何改进这个更耐用的地方的建议。也许可以将代码复制到应用程序文件夹中到NAnt脚本中?在我看来,这似乎是一种倒退,但我愿意听取对它的争论。
好的,开火吧:)
发布于 2008-09-30 20:07:35
您的DB模式多久更改一次?是否可以按需生成与数据库相关的文件(例如,模式更改时),然后将它们签入代码存储库?
如果数据库模式没有改变,还可以打包已编译的*.cs类并将存档分发给其他项目。
发布于 2008-09-05 18:02:58
我们的解决方案中有两个完全由生成的代码构建的项目。基本上,我们将代码生成器.exe作为另一个项目的构建后步骤运行,在生成代码的同时,它会自动化visual的活动实例,以确保生成的项目在解决方案中,并确保生成的所有代码文件都在必要时被签出/添加到TFS中。
在VS自动化阶段,它很少脱落,我们必须“手动”运行它,但通常只有当VS的几个实例打开且解决方案的>1个实例打开时,它无法确定它应该自动运行哪个实例。
我们的解决方案和过程是这样的,在我们的自动生成之前,这一代应该一直被完成和修正,所以这种方法可能对你不起作用。
发布于 2008-09-05 18:56:10
是的,我想把VS从等式中取出来,这样从VS生成的代码和引用就是简单的编译。
我可以管理NAnt脚本..。我只是想知道,人们是否有关于拥有一个NAnt脚本的建议,或者每个项目可能有一个这样的建议,这些脚本可以将代码推入项目中,而不是被拉出来。
这确实意味着您必须选择生成代码。
https://stackoverflow.com/questions/46149
复制相似问题