5

我正在尝试做的事情

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

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

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

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

实际问题

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

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

简单的自包含正确示例

可以在此处找到演示解决方法的SSCCE。该示例包含在.readme.txt

4

1 回答 1

0

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

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

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

于 2013-07-01T22:56:13.487 回答