主页面代码后面没有编译成汇编

时间:2011-07-01 09:45:00

标签: asp.net visual-studio-2010

我完全被这个问题困扰了。我有一个包含一些母版页的ASP.NET Web应用程序。今天早上我添加了一个新的母版页并将其连接到ASPX。但是,我不断收到Y.S.O.D并带有错误:

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文件一样。

我现在完全难过了。我不知道为什么这不起作用或者我错过了任何明显的事情。

更新

我只是使用我们的CI服务器使用的相同MSBUILD脚本在命令行运行构建,并且生成的程序集确实包含类后面的新主页代码。所以看起来项目文件没有任何问题。

然后我检查了Visual Studio输出的文件日期。 Web应用程序项目的程序集已有两天,而其他程序集是最新的...我现在正在尝试确定Visual Studio未正确构建该特定项目的原因。感谢收到任何关于检查内容的其他想法。

更新2

Visual Studio毕竟是在创建文件...它只是把它放在错误的目录中。它在Web应用程序项目下的binbin/x86/Debug中放置了许多项目文件。它也是从旧的构建目录中复制文件,因为某些文件的文件日期不同。

我只能猜测问题的一部分可能与我分裂一些代码以试图昨天清理代码库有关。但我不明白它是如何在binbin/x86/Debug

之间的混合输出之间结束的

3 个答案:

答案 0 :(得分:4)

实际上发生的事情(通过源代码控制历史查看)似乎是某些项目有x86平台可用而其他项目没有。最近他们都有了一个x86平台来保持一致。但是,该平台配置的输出路径并未在整个板上设置相同,因此程序集最终位于不同的目录中。

当我将平台设置回“Any CPU”时,它工作正常。我将不得不完成所有项目,使输出路径保持一致,以便所有程序集输出到正确的位置。

答案 1 :(得分:1)

&gt;起初我以为我刚刚在母版页指令中拼写错误,但我已经检查并仔细检查过,这似乎不是它。

还检查了主页的命名空间?

  

CodeBehind =“LoggedIn.master.cs”

应该是CodeBehind="LoggedIn.Master.cs",资本是M吗?

答案 2 :(得分:1)

新生成的master.cs文件的命名空间是否存在问题?如果母版页位于解决方案子文件夹中,则它将自动在生成的命名空间定义中包含文件夹名称。

在旁注中,是否有任何未来的格拉斯哥.net事件通过SDN整合在一起?