MSBuild不以二进制形式包含嵌入式资源(nhibernate hbm.xml)

时间:2018-10-24 11:03:08

标签: .net powershell msbuild visual-studio-2017

我正在开发一个使用.net Framework 4.6.2的.net类库项目。 该项目使用NHibernate,并且确实包含大量的hbm.xml文件,用于db表和实体之间的映射。 我项目中的* .hbm.xml文件具有构建操作“嵌入式资源”,并且在csproj.files中看起来像这样

当我在本地计算机上通过调试或发行版(相对于2017(15.8.4)MSBuild 15.7.179)构建项目时,一切工作正常,嵌入式资源包含在二进制文件中。

但是,当Buildserver克隆git存储库(在完全清除项目之后)并编译项目时,不包括嵌入式资源。 Buildserver(我们使用Teamcity)也安装了相同的.net框架版本4.6.2和VS 2017(也与我的本地PC版本相同),并且也使用了MSBuild 15.7.179

[12:21:37] [步骤2/7]构建解决方案.... \ My ***。sln

[12:21:37] [步骤2/7]用于.NET Framework的Microsoft(R)Build Engine版本15.7.179.6572

此构建过程中产生的二进制文件不包含任何(零个)嵌入式资源

奇怪的是,当我在Powershell中运行构建命令时,在Teamcity的相同Windows帐户下,已编译的二进制文件确实包含嵌入式资源? 我们已经重新启动并在构建服务器上安装了最新的Windows更新。

我使用JustDecomplile(Telerik)研究二进制文件。

有人知道这种奇怪的行为吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

我的一位同事找到了解决方案, 而不是“ 编译”,它必须是我们传递给msbuild的“ build ”参数。 显然,编译对嵌入式资源没有任何作用。

初始: $ msbuild $ SolutionFile“ / t:restore; compile”“ / p:Configuration = $ buildConfiguration; Platform = $ buildPlatform;

解决方案: $ msbuild $ SolutionFile“ / t:restore; build”“ / p:Configuration = $ buildConfiguration; Platform = $ buildPlatform;