运行转换:请覆盖替换令牌'$edmxInputFile$'

本文关键字:edmxInputFile 令牌 替换 转换 覆盖 运行 | 更新日期: 2023-09-27 18:14:00

我正在使用. net 4.5在VS2012中创建控制台项目。在它之后,我"添加","新建项目"到项目中,并选择"EF 5"。x DbContext生成器"。然后,几秒钟后,以下错误信息出现在"错误列表"选项卡中:

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

如何解决这个问题?

我错过了什么

运行转换:请覆盖替换令牌'$edmxInputFile$'

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

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

所以如果你添加了一个DbContext生成器,然后删除它,你得到这个错误,只要关闭并重新打开项目。帮我解决了

在我的例子中,我无意中添加了EF Db Context Generator而不是Entity Framework。总PEBKAC,但我把它贴在这里,因为我相信我不会是唯一的一个。

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

如果你想添加实体,那么添加ADO.NET Entity Data Model 而不是 EF X.x DbContext Generator

在我的情况下,我决定我想摆脱EF 5。DbContext生成器。当我选择添加它时,我得到了这个错误,但随后删除了"Model1.Context"。"Model1. tt"answers"Model1. tt"。我想了想。不幸的是,我没有意识到这并不是我要做的全部。当我做另一个"构建"时,我得到了OP的错误。

我的下一步:我去了模型1。tt,清除$edmxInputFile$并将其保留为空字符串,然后单击以构建项目。这给了我一个UnauthorizedException错误(这很好,我不希望它修改任何东西,无论如何)。我只是想让它去掉原来的错误。

接下来,我做了一些调查,我发现我的项目是"。

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

现在我不认为这个GUID将是相同的在所有情况下的错误,甚至每次有人添加EF 5。DbContext生成器。但是如果您的。csproj文件(注意:这与您的。csproj。用户文件)已被更改(希望它在源代码控制中,您可以告诉这一点),您应该能够弄清楚是如何更改的。我删除了这一部分,做了一个"构建",并摆脱了我的错误。

如果它不在源代码控制中,您可以创建一个虚拟项目,并将您的.csproj文件与该项目的文件进行比较,并通过取出.csproj上的任何额外内容并进行"构建"(将内容保存到记事本,如果不清除错误则将其放回)来做一些尝试和错误。我知道这是一种糟糕的方法,但至少您不会浪费时间重新编写整个解决方案。