我目前有一个项目文件,其中包含一个EF 5模型,其中.edmx已配置为将元数据嵌入到输出程序集中。
如果我通过Visual Studio 2012运行本地程序包,则生成的程序集包含正确的资源。通过MSBuild手动运行包也正确地将资源嵌入到程序集中:
msbuild web.csproj /t:Package /p:Configuration=Release
当我使用dotPeek通过MSBuild包步骤手动检查Visual Studio 或生成的程序集时,我可以确认该程序包包含.csdl,.ssdl和.msl资源
我手头有一台运行Microsoft Windows Server 2012和Visual Studio 2012的构建服务器。如果我通过Visual Studio 2012命令提示符手动运行MSBuild,使用与上面相同的命令行,则会生成一个程序集, 不包含嵌入的资源。
为什么在通过MSBuild执行自动程序包时,我的EF元数据文件没有被嵌入?
答案 0 :(得分:0)
使用您的示例,在安装的Windows 8 + VS2012上,我能够使用Package.bat生成包,并且所有生成的程序集都包含所有EF元数据文件。 在Readme.txt中,您将提到MSDeploy
4)在项目上运行MSDeploy / t:package
从您的问题看起来您遇到了MSBuild问题。 您可以验证在运行构建时没有旧的TestEntityEdmx.Hackaround.dll位于TestEntityEdmx \ obj \ Release ...文件夹中。