C# 运行时System.Web.HttpCompileException;“类型”&书信电报;类型>&引用;在未引用的程序集中定义

C# 运行时System.Web.HttpCompileException;“类型”&书信电报;类型>&引用;在未引用的程序集中定义,c#,asp.net,iis,webforms,C#,Asp.net,Iis,Webforms,关于这个异常,有几个关于堆栈溢出的问题,但是没有一个涉及到.aspx文件的运行时编译,而且没有一个建议的解决方案适合我 我有一个web应用程序,截至昨天下午,它已编译并运行良好。当我今天早上再次开始工作时,我突然在运行时收到一个异常,当IIS试图编译所讨论的.aspx页面时。(已更改类型名称以保护无辜者。) c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\MyWebApp\bdb24adf\eb59299

关于这个异常,有几个关于堆栈溢出的问题,但是没有一个涉及到.aspx文件的运行时编译,而且没有一个建议的解决方案适合我

我有一个web应用程序,截至昨天下午,它已编译并运行良好。当我今天早上再次开始工作时,我突然在运行时收到一个异常,当IIS试图编译所讨论的.aspx页面时。(已更改类型名称以保护无辜者。)

c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\MyWebApp\bdb24adf\eb592999\App\u Web\u MyPage.aspx.cdcab7d2.gibiyx2g.0.cs(148):错误CS0012:类型“MyType”是在 未引用。必须添加对程序集“MyAssembly”的引用, 版本=40.0.0.30,区域性=中性,PublicKeyToken=7ca3fb5049101832

我可以通过在web.config中添加程序集引用来消除此异常,但我不必这样做。根据堆栈溢出问题,在配置文件中添加程序集引用的唯一时间是在ASP.Net应用程序中部署未编译的.cs代码文件时

自从昨天一切正常以来,此页面的.aspx文件和代码隐藏文件都没有更改。自昨天下午以来,Web.config文件中也没有任何更改

除了在设计时更改引用属性或修改web.config之外,我还能做些什么来消除这个伪异常

更新:

定义
MyType
的程序集安装在GAC中,自从我第一次尝试解决问题以来,我已经多次确认了这一点

更新:

我终于了解了导致异常的确切变化。我试图查看并引发异常的.aspx页面有一个代码隐藏类,该类继承自自定义基页类

public class MyPageClass : MyBasePageClass
我在
MyBasePageClass
中添加了以下方法,当注释掉该方法时,会使异常消失:

protected T CreatePartyPlaceholder<T>(T owner) where T : Party, new()
{
    return new T { TemporaryId = owner.TemporaryId };
}
受保护的T CreatePartyPlaceholder(T所有者),其中T:Party,new()
{
返回新的T{TemporaryId=owner.TemporaryId};
}

还有一些其他现有方法引用
参与方
类,但这个新方法是唯一一个将类用作泛型类型约束的方法。

是的,这是microsoft的错误。打开一个关于它的连接。或者,部署环境中出现了问题。你为什么不打开fusion日志,看看它在哪里找到你的参考?可能会告诉你为什么参考文献以前是定位的,但现在不是。如果它在GAC中,那么它有一个很强的名称。您仍然引用该确切版本,还是引用其他版本?此外,web.config中可能存在绑定重定向。在配置下签出运行时元素。查找您遇到问题的程序集。是不是将你的GAC版本重定向到另一个不在GAC中的版本?好问题。昨天早上,我升级了相关程序集的版本和文件版本,随后我在GAC中安装了新版本,并增加了消费应用程序中的所有引用,就像我以前做过几十次一样。在那之后,我在一天剩下的时间里一直在愉快地编码、测试和调试。强名称只会因修订号不同而有所不同。Fusion日志查看器听起来很有希望。但是,它似乎没有记录与我看到的异常相对应的任何内容。我不记得在动态编译ASP.Net资源期间必须做任何特殊的事情来满足编译器的要求。我总是在web应用程序中添加对程序集的引用,在动态编译过程中从未听到过任何提示。这就是为什么这件事如此神秘。如果程序集名称有问题,那么Visual Studio也将无法找到该程序集,我将得到生成错误。sdk中有一个用于配置fusion日志的工具。找到它,以管理员身份运行该工具,然后重新启动。如果您不这样做,它看起来会工作,但不会记录任何内容:/Yes,这是microsoft的错误。打开一个关于它的连接。或者,部署环境中出现了问题。你为什么不打开fusion日志,看看它在哪里找到你的参考?可能会告诉你为什么参考文献以前是定位的,但现在不是。如果它在GAC中,那么它有一个很强的名称。您仍然引用该确切版本,还是引用其他版本?此外,web.config中可能存在绑定重定向。在配置下签出运行时元素。查找您遇到问题的程序集。是不是将你的GAC版本重定向到另一个不在GAC中的版本?好问题。昨天早上,我升级了相关程序集的版本和文件版本,随后我在GAC中安装了新版本,并增加了消费应用程序中的所有引用,就像我以前做过几十次一样。在那之后,我在一天剩下的时间里一直在愉快地编码、测试和调试。强名称只会因修订号不同而有所不同。Fusion日志查看器听起来很有希望。但是,它似乎没有记录与我看到的异常相对应的任何内容。我不记得在动态编译ASP.Net资源期间必须做任何特殊的事情来满足编译器的要求。我总是在web应用程序中添加对程序集的引用,在动态编译过程中从未听到过任何提示。这就是为什么这件事如此神秘。如果程序集名称有问题,那么VisualStudio也无法找到该程序集,我将