InvalidOperationException安装Visual Studio 11 Beta后

时间:2012-03-14 15:46:24

标签: c# visual-studio visual-studio-2012 .net-4.5

我最近在矿山生产机器上安装了Visual Studio 11 Beta和.Net Framework 4.5(但是并排放置了Visual Studio 2010)。它对我来说好几天,但后来它开始在这部分代码中抛出InvalidOperationException

ItemDB itemDB = new ItemDB();
ItemDetails item = itemDB.GetItem((int)Session["itemId"]);
string code = item.Code;
Control html = ParseControl(code);
placeholderPage.Controls.Add(html);

异常发生在我ParseControl的行上,在字符串代码中我有常规的html。最奇怪的是,在安装新的Visual Studio之前,这段代码运行得很好,而且它仍适用于在.NET Framework 4上安装了VS2010的大学机器。

异常后,它会显示以下消息:Cannot instantiate type 'TracedLiteralControl' because there is no public parameterless constructor.

2 个答案:

答案 0 :(得分:7)

我有同样恼人的问题,但在使用Page.ParseControl时。 这是详细信息: 发生System.InvalidOperationException 消息:无法实例化类型' TracedLiteralControl'因为没有公共无参数构造函数。

然后看着CallStack我发现了以下有趣的一行:     Microsoft.VisualStudio.Web.PageInspector.Loader.dll!Microsoft.VisualStudio.Web.Runtime.WebForms.TracedLiteralControlBuilder.BuildObject()+ 0x2f bytes

看起来,为了新的PageInspector功能,VS 11在我的Web应用程序运行时中插入一个程序集。我没有确定地添加了程序集,所以显而易见的地方是在.NET Framework配置中,特别是在web.config中

在我的情况下,文件放在C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ web.config和" Bingo" - 在第88行,我发现了下一个:

<add assembly="Microsoft.VisualStudio.Web.PageInspector.Loader, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

我注释掉了这一行,我的应用程序再次正常运行。

希望有所帮助, Velio公司

答案 1 :(得分:3)

如果您在使用Page Inspector时遇到问题,可以在自己的web.config中禁用它:

<compilation defaultLanguage="c#" debug="true" targetFramework="4.0">
  <assemblies>
    <remove assembly="Microsoft.VisualStudio.Web.PageInspector.Loader, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </assemblies>
</compilation>