实体框架不会将元数据嵌入到dll中

Mik*_*ley 5 c# msbuild teamcity entity-framework embedded-resource

我想做什么

我目前有一个项目文件,其中包含一个EF 5模型,其中.edmx配置为将元数据嵌入到输出程序集中.

如果我通过Visual Studio 2012运行本地程序包,则生成的程序集包含正确的资源.通过MSBuild手动运行包也正确地嵌入了程序集中的资源:

msbuild web.csproj /t:Package /p:Configuration=Release
Run Code Online (Sandbox Code Playgroud)

当我手动检查Visual Studio生成的程序集使用dotPeek的MSBuild包步骤时,我可以确认该程序包包含.csdl,.ssdl和.msl资源.

实际问题

我手头上运行.如果我通过手动调节的Visual Studio 2012命令提示符下运行的MSBuild,使用上述完全相同的命令行,然后组装产生,它的Microsoft Windows Server 2012和Visual Studio 2012年构建服务器包含嵌入的资源.

当我通过MSBuild执行自动程序包时,为什么我的EF元数据文件没有被嵌入?

简单的自包含正确的例子

一个SSCCE这表明了解决办法可能会发现在这里.该示例包含重现错误所需的确切步骤readme.txt.

cod*_*ion 0

使用您的示例,在安装的 Windows 8 + VS2012 上,我能够使用 Package.bat 生成包,并且所有生成的程序集都包含所有 EF 元数据文件。在 Readme.txt 中,您提到了 MSDeploy

4) 在项目上运行 MSDeploy /t:package

从您的问题来看,您的 MSBuild 存在问题。您能否验证运行构建时 TestEntityEdmx\obj\Release... 文件夹中没有旧的 TestEntityEdmx.Hackaround.dll?