如何识别装配问题的原因?

时间:2012-09-13 13:21:23

标签: c# sharepoint-2010

我在一个新的不熟悉的领域出现错误,SharePoint开发。我正在尝试通过Visual Studio 2012调试我的解决方案,并且我收到了EventLog中记录的以下错误:

异常信息:

Exception type: FileLoadException 
Exception message: The located assembly's manifest definition does not match the 
  assembly reference. (Exception from HRESULT: 0x80131040)

在@__BuildControlTree方法中,我的控件的.ascx.g.cs中出现错误。不幸的是它没有告诉我程序集的名称,所以我不确定错误在哪里。报告的堆栈跟踪是:

  

堆栈追踪:
  在MI.VWP.Chart.Chart.CreateChildControls()at   System.Web.UI.Control.EnsureChildControls()at   System.Web.UI.WebControls.WebParts.Part.get_Controls()at   System.Web.UI.Control.AddParsedSubObject(Object obj)at   Microsoft.SharePoint.WebPartPages.WebPart.AddParsedSubObject(对象   obj)at   MooDInternational.VisualWebParts.Chart.Chart .__ BuildControlTree(图   __ctrl)在MooDInternational.VisualWebParts.Chart.Chart.InitializeControl()处于   MooDInternational.VisualWebParts.Chart.Chart.OnInit(EventArgs e)at   System.Web.UI.Control.InitRecursive(Control namingContainer)at   System.Web.UI.Control.AddedControl(控件控件,Int32索引)at   System.Web.UI.WebControls.WebParts.WebPartManager.WebPartManagerControlCollection.AddWebPartHelper(的WebPart   webPart)在   System.Web.UI.WebControls.WebParts.WebPartManager.WebPartManagerControlCollection.AddWebPart(的WebPart   webPart)在   System.Web.UI.WebControls.WebParts.WebPartManagerInternals.AddWebPart(的WebPart   webPart)在   Microsoft.SharePoint.WebPartPages.SPWebPartManager.AddWebPartWithRetry(的WebPart   webPart)在   Microsoft.SharePoint.WebPartPages.SPWebPartManager.CreateWebPartsFromRowSetData(布尔   onlyInitializeClosedWebParts)at   Microsoft.SharePoint.WebPartPages.SPWebPartManager.LoadWebParts()
  在   Microsoft.SharePoint.WebPartPages.SPWebPartManager.OnPageInitComplete(对象   发件人,EventArgs e)在System.EventHandler.Invoke(对象发送者,   EventArgs e)在System.Web.UI.Page.OnInitComplete(EventArgs e)
  在System.Web.UI.Page.ProcessRequestMain(布尔值   includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)

如果我尝试在那里设置断点,我不会调用该方法。我已经尝试过看看fusionlog但是得到了以下我认为没有帮助......

*装配活页夹日志条目(13/09/2012 @ 14:16:15)*

  

手术成功。绑定结果:hr = 0x0。操作   成功完成。

     

装配管理器从以下位置加载:   C:\ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ mscorwks.dll正在运行   在可执行文件C:\ Program Files(x86)\ Microsoft Visual Studio下   11.0 \ Common7 \ IDE \扩展\微软\的SharePoint \ vssphost4.exe   ---详细的错误日志如下。

     

===预绑定状态信息===日志:用户= ** 。*****日志:DisplayName = Microsoft.Build.Framework,Version = 2.0.0.0,   Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a(完全指定)   日志:Appbase = file:/// C:/ Program Files(x86)/ Microsoft Visual Studio   11.0 / Common7 / IDE / Extensions / Microsoft / SharePoint / LOG:初始PrivatePath = C:\ Program Files(x86)\ Microsoft Visual Studio   11.0 \ Common7 \ IDE \ Extensions \ Microsoft \ SharePoint \ VstspCache10724 LOG:Dynamic Base = NULL LOG:Cache Base = NULL LOG:AppName = NULL Calling   汇编:(未知)。日志:此绑定在默认加载上下文中启动。   日志:使用应用程序配置文件:C:\ Program Files   (x86)\ Microsoft Visual Studio   11.0 \ Common7 \ IDE \ Extensions \ Microsoft \ SharePoint \ vssphost4.exe.Config日志:使用来自的机器配置文件   C:\ WINDOWS \ Microsoft.NET \ Framework64 \ V2.0.50727 \ CONFIG \ machine.config中。   日志:绑定成功。返回汇编   C:\ WINDOWS \装配\ GAC_MSIL \ Microsoft.Build.Framework \ 2.0.0.0__b03f5f7f11d50a3a \ Microsoft.Build.Framework.dll。   日志:程序集在默认的加载上下文中加载。

有人可以就如何解决这个问题提出任何建议吗?

修改

使用Reflector我设法调试生成的@_BuildControl方法,并发现对AddParsedSubject(object child)的调用,这是一个控件上的虚方法。

添加以下代码:

protected override void AddParsedSubObject(object obj)
{
  System.Web.UI.Control child = obj as System.Web.UI.Control;
  if (child != null)
  {
    try
    {
       base.AddParsedSubObject(obj);
       System.Diagnostics.Trace.WriteLine("Added " + child.ToString());
    }
    catch (Exception ex)
    {
       System.Diagnostics.Trace.WriteLine("Error with " + child.ToString() + " : " + ex.ToString());
    }
  }
}

这告诉我导致问题的控件是DevExpress.XtraCharts.Web.WebChartControl,所以我知道我已经将程序集跟踪到其中一个DevExpress,而不是100%确定哪个并且还不确定如何解决它

1 个答案:

答案 0 :(得分:0)

在asp.net中,这种错误意味着在bin或temp asp.net文件夹中没有替换旧的引用。如果我是你,我会清理这些文件夹重建我的项目..