在Build Server而不是Dev Machine上编译时DLL的差异

时间:2010-03-18 21:45:27

标签: asp.net visual-studio-2008 msbuild user-controls

我有一个应用程序将用户控件加载到.NET Web应用程序中。当我在我的开发机器上本地编译和测试应用程序时,它可以在我的机器上运行。在我们的构建服务器上使用MSBuild成功构建项目。但是当我在构建服务器上部署由MSBuild生成的dll时,我在应用程序加载控件时出现以下错误:

BC30456:'CreateResourceBasedLiteralControl'不是'ASP.usercontrols_somecontrol_ascx'的成员。

我看一下,比较了我机器上生成的dll,并将它(看文件大小)与构建服务器创建的那个进行了比较,并注意到了 文件大小的差异。考虑到本地构建的代码和构建服务器上的代码是IDENTICAL,这是令人困惑的。我手动比较每个文件。所以我的问题是:导致此错误的原因是什么?在编译代码时,MSBuild编译代码和Visual Studio中发生了什么会有什么不同?

2 个答案:

答案 0 :(得分:4)

你有版本问题。目标计算机上的某些程序集与开发计算机上的程序集不同。我担心你不得不做一些挖掘来追捕它,因为这个错误信息完全没有用。真的,它指向你错误的方向,因为问题不在你的程序集中。这可能是由项目参考中的某些内容引起的。你的开发机器上有没有第三方工具或SDK尚未在服务器上更新?

我最后一次看到这是因为我构建了一个DotNetNuke模块,该模块是针对比我的服务器更新的DotNetNuke.dll程序集构建的。

答案 1 :(得分:0)

如果您将其编译为dll 尝试删除App_Code.dll文件夹中的bin