我有一个问题是t4mvc会丢失它每次更新SVN时生成的代码。我可以通过删除.generated.cs文件并重新运行模板来修复它。但事实证明这有点令人厌烦。我有什么东西不见了吗?
首先是一些背景信息…
我正在使用C_v4、VS2010和ASP.NET MVC2。我使用Subversion进行源代码管理。我还在VS2010中运行许多加载项和扩展…
-
Huagati DBML.EDMX工具
-
zippy.chirp(用于自动运行t4mvc模板)
-
RESHARPER V5
-
视觉矢量网
-
对齐工作分配
-
ASP.NET OpenID网站
-
大括号完成符(禁用)
-
代码4博客
-
德弗莱克
-
突出显示所选单词的所有匹配项(禁用)
-
HTML拼写检查器(已禁用)
-
Lipsum 2010-Lorem ipsum生成器
-
用于Visual Studio 2010的PowerCommands
-
生产力电动工具
-
拼写检查(已禁用)
-
Visual Studio后台自定义程序
-
Visual Studio颜色主题编辑器
-
VS10X代码标记
-
vs默认浏览器切换世界
实际上,我写这个问题是为了更新我的工作副本,并在每个阶段捕获我所能做到的……
步骤1
我已经打开了我的IDE开始我今天的工作,在我更新工作副本之前我已经有4个编译器警告了…
Warning 1 The C# 2.0 and C# 3.5 compilers are no longer supported. Templates will always be compiled with the version 4 compiler instead of 'v3.5' as specified. C:\Data Files\Projects\Web\ByBox.Vanventory\ByBox.Vanventory\T4MVC.tt 18 4
Warning 2 Compiling transformation: Unreachable code detected c:\Users\antony\AppData\Local\Temp\z04plrve.0.cs 1015 17
Warning 3 Compiling transformation: Assuming assembly reference 'EnvDTE, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' matches 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a', you may need to supply runtime policy C:\Data Files\Projects\Web\ByBox.Vanventory\ByBox.Vanventory\T4MVC.tt 1 1
Warning 4 Compiling transformation: Unreachable expression code detected c:\Data Files\Projects\Web\ByBox.Vanventory\ByBox.Vanventory\T4MVC.tt 968 33
步骤2
我现在正在更新我的工作副本,方法是右键单击解决方案资源管理器中的根节点并选择
更新
从上下文菜单的视觉SVN部分。
我的大多数.generated.cs文件都有树冲突…
-
homecontroller.generated.cs(树冲突)
-
t4mvc.cs(树冲突)
-
t4mvc.explicitextensions.cs(已删除,已添加)
-
goodsincontroller.generated.cs(树冲突)
-
sharedcontroller.generated.cs(已删除,已添加)
-
stocklistcontroller.generated.cs(树冲突)
-
stockcheckcontroller.generated.cs(树冲突)
-
authcontroller.generated.cs(树冲突)
-
goodsoutcontroller.generated.cs(树冲突)
步骤3
我现在正在解决我的冲突。我怀疑这就是问题所在,因为我总是保存本地文件并将其标记为已解决。我刚刚为第一个冲突(homecontroller.generated.cs)做了这个。然后我尝试与本地副本进行比较,并收到以下错误消息…
找不到'c:/data'的存储库位置
文件/项目/web/bybox.vanventory/bybox.vanventory/homecontroller.generated.cs'
修订版14638
哇-坚持住!
今天早些时候,当我意识到树冲突的原因是生成的文件实际上正在被删除并重新添加到项目中时,我已经了解到了这一点。现在,我不知道t4mvc本身是在做这个,还是在做欢快的扩展。我浏览过Chirpy的源代码(只是在CodePlex上的Web浏览器中浏览),但它似乎没有做到这一点。
我认为
树冲突
在Subversion中,有两个人都对控制器进行了更改,这导致我们两个都生成了具有相同文件名的新文件。因此,Subversion有2个新文件,并将其标记为
树冲突
因为它不知道该怎么办。
我已经和一位同样使用T4MVC的同事确认,他们对它没有任何问题,但他们是唯一更改控制器代码的人。在我的项目有两个人之前,我从来没有遇到过问题。自从第二个人开始处理这个项目并对控制器代码进行更改之后,这个问题就出现了。
那么,我是在错过一些显而易见的东西,还是在滥用t4mvc和/或叽叽喳喳?
目前,我有一个很糟糕的解决方案。我编写了一个PowerShell脚本来“触摸”所有controller.cs文件。我把它放在我的
外部工具
在VS2010中。当我遇到这个问题时,我运行PowerShell脚本,然后构建软件,强制运行T4MVC模板,所有错误都会消失。这不理想,我希望它“只是工作”。
编辑
为了澄清这一点,我希望能够在早上打开Visual Studio,进行SVN更新(通过VisualVN),并且不必花费任何时间来构建它,因为昨天生成的文件中缺少代码。
那么,模板/t4mvc在Visual Studio中的工作原理是什么?
(如果它要删除生成的文件,并在每次运行时重新创建它们,那么我将不得不停止使用它,因为这与使用Subversion和多人处理生成的代码不符)