我完全被这个问题难住了。我有一个包含一些母版页的ASP.NET Web应用程序。今天早上,我添加了一个新的母版页,并将它连接到一个ASPX。不过,我不断收到一个YSOD与错误:母版页后面的代码不编译成汇编
Parser Error Message: Could not load type 'Blah.UI.Web.WebForms.Master.LoggedIn'.
Source Error:
Line 1: <%@ Master Language="C#"
MasterPageFile="~/WebForms/Master/IFrameContent.Master"
AutoEventWireup="true" CodeBehind="LoggedIn.master.cs"
Inherits="Blah.UI.Web.WebForms.Master.LoggedIn" %>
起初,我以为我只是拼写错误的东西在母版页指令,但我已经检查和双重检查,并且似乎没有不是吧。
因为它说:“无法加载类型”我用DotPeak检查背后类的代码实际上已被编译成汇编,这是不存在的。原来的主页在那里,但我今天早上添加的那个不是。
所以,我计算过,我只是建错了不知何故(我已经尝试了完全重建已经......但我不妨再试一次)。仍然失踪。
我检查对先前版本中的csproj文件的源代码控制,我可以看到,新的代码有:
<Compile Include="WebForms\Master\LoggedIn.master.cs">
<DependentUpon>LoggedIn.master</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="WebForms\Master\LoggedIn.master.designer.cs">
<DependentUpon>LoggedIn.master</DependentUpon>
</Compile>
...后来又在同一个文件...
<ItemGroup>
<Content Include="WebForms\Master\LoggedIn.master" />
</ItemGroup>
如果我看在Visual Studio中的属性的.cs文件说:
- 生成操作:编译
- 复制到输出目录:不要复制
这就像CS文件的主网页,这些网页的工作。
我现在完全难住了。我不知道为什么这不起作用,或者我错过了任何明显的事情。
UPDATE
我刚刚运行在使用我们的CI服务器使用相同的MSBUILD脚本,并产生不包含隐藏类新的主网页代码的程序集的命令行构建。因此,看起来似乎没有任何错误的项目文件。
我然后检查在Visual Studio输出的文件日期。 Web应用程序项目的程序集是两天前的,而其他程序集是最新的......我现在试图确定为什么Visual Studio没有正确构建特定的项目。感激地收到任何额外的检查内容。
更新2
Visual Studio是创建文件毕竟......它只是把它在错误的目录。在Web应用程序的项目下,它将bin
中的一些项目文件和bin/x86/Debug
中的一些项目文件放入。它也是从看起来像旧建立目录的文件复制文件,因为某些文件的文件日期不同。
我只能猜测问题的一部分可能与我分裂一些代码以试图清理代码库昨天有关。但我不明白它是如何输出的混合之间bin
和bin/x86/Debug
之间
也许VS无法将新程序集复制到bin文件夹 - 检查输出窗口以查看文件是否被复制。你还应该在obj文件夹中检查程序集的日期。另一个问题可能是跳过网络项目的解决方案配置(输出窗口应该告诉你发生了什么)。 – VinayC