EF5启动项目:错误运行转换:请覆盖替换令牌'$ edmxInputFile $'

时间:2013-05-17 13:42:58

标签: c# entity-framework-5 .net-4.5

我正在使用.Net4.5在VS2012中创建一个控制台项目。 之后我将“添加”,“新项目”添加到项目中,然后选择“EF 5.x DbContext Generator”。 然后,几秒钟后,“错误列表”选项卡中会出现以下错误消息:

  

错误1运行转换:请使用您要生成的.edmx文件的实际名称覆盖替换标记'$ edmxInputFile $'。 C:\项目\测试\ ConsoleAppEF5 \ ConsoleAppEF5 \ Model1.tt`

我该如何解决这个问题?

我错过了什么?

4 个答案:

答案 0 :(得分:45)

您应首先创建edmx模型以自动生成POCO。您可以通过菜单添加它(添加新项 - > ADO.NET实体数据模型)。创建模型后,您可以使用DbContext生成器。将$ edmxInputFile $替换为edmx文件的名称,然后保存您正在编辑的文件(尽管VS 2012应该自动执行)。

答案 1 :(得分:40)

在另一种情况下,这显然是一个已知的错误:http://web.archive.org/web/20131203074519/http://connect.microsoft.com/VisualStudio/feedback/details/498723/ado-net-entityobject-generator-error-list-bug

因此,如果您添加DbContext Generator然后将其删除并且您收到此错误,请关闭并重新打开该项目。解决了它。

答案 2 :(得分:7)

就我而言,我无意中添加了EF Db Context Generator而不是Entity Framework。总计PEBKAC,但我在此发布,因为我确定我不会是唯一的。

我注意到文件扩展名为TT,因为这是一个文本模板而不是我想要的EDMX

如果您要添加实体,请添加ADO.NET Entity Data Model EF X.x DbContext Generator

答案 3 :(得分:2)

就我而言,我决定要摆脱EF 5.x DbContext Generator。当我选择添加它时出现此错误,但随后删除了" Model1.Context.tt"和" Model1.tt"在更好地思考之后。对我来说不幸的是,我并没有意识到这不是我必须做的全部。当我做另一个" Build"时,我得到了OP的错误。

我接下来的步骤:我去了Model1.tt,清除了$edmxInputFile$并将其保留为空字符串并单击以构建项目。这给了我一个UnauthorizedException错误(这很好,我也不想让它修改任何东西,无论如何)。我只是想让它摆脱原来的错误。

接下来,我做了一些探讨,我发现我的项目" .csproj"文件被修改为:

<ItemGroup>
    <Service Include="{508349B6-6B84-4DF5-91F0-309BEEBAD82D}" />
</ItemGroup>

现在我不认为这个GUID在所有错误情况下都是一样的,甚至每次有人在EF 5.x DbContext Generator上添加时都是如此。但是,如果您的.csproj文件(注意:这与您的.csproj.user文件不同)已经更改(希望它在源代码管理中,您可以告诉它),您应该能够弄清楚如何。我删除了这一部分,做了一个&#34; Build&#34;,并摆脱了我的错误。

如果它不在源代码管理中,您可以随时创建一个虚拟项目并将.csproj文件与该项目的文件进行比较,并通过取出任何额外的内容来做一些试验和错误你的.csproj和#34; Build&#34; (保存到记事本的东西,如果它没有清除你的错误就把它们放回去)。我知道这是一种很好的方式,但至少你不会浪费时间重做整个解决方案。