我在我不熟悉的新领域 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)
在我的控件的 .ascx.g.cs 中,在 @__BuildControlTree 方法中可以看到该错误。不幸的是,它没有告诉我程序集的名称,所以我不确定错误在哪里。报告的堆栈跟踪是:
堆栈跟踪:
在 MI.VWP.Chart.Chart.CreateChildControls() 在 System.Web.UI.Control.EnsureChildControls() 在 System.Web.UI.WebControls.WebParts.Part.get_Controls() 在 System.Web.UI.Control.AddParsedSubObject (Object obj) at Microsoft.SharePoint.WebPartPages.WebPart.AddParsedSubObject(Object obj) at MooDInternational.VisualWebParts.Chart.Chart.__BuildControlTree(Chart __ctrl) at MooDInternational.VisualWebParts.Chart.Chart.InitializeControl() at MooDInternational.VisualWebParts.Chart .Chart.OnInit(EventArgs e) 在 System.Web.UI.Control.InitRecursive(Control NamingContainer) 在 System.Web.UI.Control.AddedControl(Control control, Int32 index) 在 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(Boolean onlyInitializeClosedWebParts) 在 Microsoft.SharePoint.WebPartPages.SPWebPartManager.LoadWebParts()CreateWebPartsFromRowSetData(Boolean onlyInitializeClosedWebParts) 在 Microsoft.SharePoint.WebPartPages.SPWebPartManager.LoadWebParts()CreateWebPartsFromRowSetData(Boolean onlyInitializeClosedWebParts) 在 Microsoft.SharePoint.WebPartPages.SPWebPartManager.LoadWebParts()
在 Microsoft.SharePoint.WebPartPages.SPWebPartManager.OnPageInitComplete(Object sender, EventArgs e) 在 System.EventHandler.Invoke(Object sender, EventArgs e) 在 System.Web.UI.Page.OnInitComplete(EventArgs e)
在 System.Web.UI .Page.ProcessRequestMain(布尔型 includeStagesBeforeAsyncPoint,布尔型 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\Extensions\Microsoft\SharePoint\ 下运行vssphost4.exe --- 详细的错误日志如下。
=== 预绑定状态信息 === LOG: User = **.***** LOG:DisplayName = Microsoft.Build.Framework,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a(完全指定) LOG:Appbase = file:///C:/Program Files (x86 )/Microsoft Visual Studio 11.0/Common7/IDE/Extensions/Microsoft/SharePoint/ LOG: Initial PrivatePath = C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\SharePoint\VstspCache10724 LOG: 动态Base = NULL LOG:Cache Base = NULL LOG:AppName = NULL 调用程序集:(未知)。LOG:此绑定在默认加载上下文中开始。LOG:使用应用程序配置文件:C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\SharePoint\vssphost4.exe.Config LOG:使用来自 C:\Windows\Microsoft 的机器配置文件。 NET\Framework64\v2.0.50727\config\machine.config。LOG:绑定成功。从 C:\Windows\assembly\GAC_MSIL\Microsoft.Build.Framework\2.0.0.0__b03f5f7f11d50a3a\Microsoft.Build.Framework.dll 返回程序集。LOG:程序集在默认加载上下文中加载。
任何人都可以就我如何解决这个问题提出任何建议吗?
编辑
使用 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% 确定是哪个,也不确定如何修复它。