MSBuild与Visual Studio 2008二进制文件不兼容?

时间:2012-05-11 11:09:07

标签: c# visual-studio visual-studio-2008 msbuild

我们的解决方案包括向付费用户提供源代码的程序集,但其中2个是封闭源代码。

这允许用户学习甚至修改其他人的来源。他们通常使用Visual Studio编译源代码。

我们发现了一个问题,即使用Visual Studio 2008编译的程序集在运行时与命令行上由MSBuild编译的程序集不兼容。

使用Nant和MSBuild完全自动化构建和部署过程,以预编译开源和闭源。

有趣的是,出现的运行时问题始终位于同一位置和相同的代码行。

它失败,结构字段上的MissingFieldException例外,它是一个固定的字节数组缓冲区。它是在不安全的代码中访问的。这对我们来说是莫名其妙的,因为在编译时检查该字段是否存在,除了上面编译的代码之外,代码不会改变。

但请记住,代码本身并不是问题,因为如果我们从命令行编译所有程序集,那么它们运行正常。或者,如果我们在Visual Studio中编译所有程序集,它们也可以正常运行。

仅当通过MSBuild构建的2个程序集与通过Visual Studio构建的其余程序集混合时,才会出现此问题。

我们已经三重检查了没有涉及#if编译开关。事实上,代码使用git进行sha1校验和,并确认是相同的源代码。

我们完全不知道为什么他们会不相容。 Visual Studio是否使用MSBuild本身进行构建?它们如何在运行时不兼容?

0 个答案:

没有答案
相关问题