我的O / R设计器不断删除designer.cs文件!

时间:2009-06-08 09:24:05

标签: c# visual-studio-2008 linq linq-to-sql or-designer

我有一个奇怪的问题,有时当我使用O / R设计器更改Linq对象时(通常通过添加我在DB中添加的字段),当我保存项目时,设计师。 cs文件被删除了!

幸运的是,我的源代码控制依赖于它;我取消删除该文件并将更改退回到csproj文件。但这真的很烦人,似乎没有任何好理由(我的项目包含大约100个对象的事实不是借口)。

还有其他人有这个麻烦吗?知道可能导致这种情况发生的原因吗?

编辑 - 其他信息 - 我的DataContext类设置了自定义基类。 D'ya认为这可能与它有关......?

5 个答案:

答案 0 :(得分:6)

您是否添加了部分类以向生成的类添加功能(等)?如果是这样 - 虽然听起来很奇怪,但是你的部分类文件中任何using语句的位置实际上可能是一个破坏代码生成的问题。尝试在命名空间内移动它们。

不,我不是在开玩笑。

在这种情况下的错误消息是“自定义工具'MSLinqToSQLGenerator'失败。未指定的错误”。改变自:

using System;
namespace MyNamespace {
    partial class MyDataContext {}
}

为:

namespace MyNamespace {
    using System; 
    partial class MyDataContext {}
}

修复它。怪异的错误。

答案 1 :(得分:4)

在处理大型DataSet时,我遇到与DataSet设计器类似的问题。您无需使用源代码管理系统取消删除该文件:只需在设计器中保存您的工作即可重新生成.designer.cs文件。您也可以右键单击该文件,然后选择“运行自定义工具”,这具有相同的效果。

答案 2 :(得分:1)

现在判断可能为时尚早,因为行为不稳定,但在我看来,如果我在.dbml文件上进行更改时在IDE编辑器中打开designer.cs文件,那么它就不会当我点击“保存”时被删除。

我已经尝试了几次,它似乎有效...没有好的解释为什么应该这样,但问题不是可以受到逻辑审查的问题,或者......

后来...

尝试了几次,我可以说这一直有效,所以我将此标记为答案!

感谢大家的帮助!

答案 3 :(得分:0)

每次更改和保存原始O / R设计器文件时,

生成* .designer.cs文件的自定义工具应由Visual Studio启动。 因此它可以以这种方式工作,它在创建新文件之前首先删除旧的.designer.cs文件。如果它没有创建新的,则自定义工具中存在问题。

答案 4 :(得分:0)

我刚遇到同样的问题,Marc的建议让我超越了自定义工具错误。但.designer.cs文件仍然被删除。

我注意到如果我更改DBML并关闭DBML(它要求保存,我选择是),它将删除designer.cs文件。如果我不关闭DBML,而是告诉它现在构建,它似乎重新生成.designer.cs文件并编译没有问题。

然后我可以关闭DBML,一切都很好。

很奇怪的互动。同事也遇到了与Shaul上述报道类似的问题。