c# - Entity Framework 不将元数据嵌入到 dll 中

标签 c# entity-framework msbuild teamcity embedded-resource

我想做什么

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

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

msbuild web.csproj /t:Package /p:Configuration=Release

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

实际问题

我手头有一台运行 Microsoft Windows Server 2012 和 Visual Studio 2012 的构建服务器。如果我使用与上述相同的命令行通过 Visual Studio 2012 命令提示手动运行 MSBuild,则会生成一个程序集包含嵌入的资源。

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

简单的自包含正确示例

A SSCCE可以找到演示解决方法的 here .该示例包含重现 readme.txt 中的错误所需的确切步骤。

最佳答案

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

4) Run MSDeploy /t:package on the project

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

关于c# - Entity Framework 不将元数据嵌入到 dll 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16192905/

相关文章:

entity-framework - 首先从数据库模型自动更新代码,这可能吗?

msbuild - 从命令提示符创建 Windows 应用商店应用程序包

c# - 声明一个父类(super class)数组

c# - 遇到 SQL 语法错误

c# - 向列表框添加控件

visual-studio - 创建包含共享项目属性的 nuget - 自动引用

c# - 使用构建后操作创建 nuget 包

c# - Spss .NET 库

c# - dbset.Remove(entity) 不工作 在此行出错

c# - 获取通用接口(interface)的所有实现类型