Код главной страницы не компилируется в сборку - PullRequest
2 голосов
/ 01 июля 2011

Я полностью озадачен этой проблемой.У меня есть веб-приложение ASP.NET, которое содержит несколько главных страниц.Этим утром я добавил новую главную страницу и подключил ее к 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 для главных страниц, которые работают.

Теперь я полностьюозадачен.Я понятия не имею, почему это не работает, или я пропустил что-то очевидное.

ОБНОВЛЕНИЕ

Я только что запустил сборку по командестрока с использованием того же сценария MSBUILD, который использует наш сервер CI, и производящая сборка содержит новый код главной страницы, стоящий за классом.Таким образом, в файле проекта нет ничего плохого.

Затем я проверил даты вывода файла Visual Studio.Сборке проекта веб-приложения два дня, в то время как другие сборки обновлены ... Сейчас я пытаюсь определить, почему Visual Studio не создает этот конкретный проект должным образом.Любые дополнительные идеи о том, что проверять, с благодарностью принимаются.

ОБНОВЛЕНИЕ 2

В конце концов Visual Studio создает файл ... он просто вводит его неправильнокаталог.Он помещает несколько файлов проекта в bin, а некоторые в bin/x86/Debug в проекте веб-приложения.Он также копирует файлы из того, что выглядит как старые каталоги сборки, поскольку даты файлов для некоторых файлов различаются.

Я могу только догадываться, что часть проблемы может быть связана со мной, когда я разделяю некоторый код в попытке очиститьдо базы кода вчера.Но я не понимаю, как это оказывается между смешением выходных данных между bin и bin/x86/Debug

Ответы [ 3 ]

4 голосов
/ 01 июля 2011

Кажется, что на самом деле (просматривая историю управления исходным кодом) произошло то, что в некоторых проектах была доступна платформа x86, а в других - нет.Недавно все они получили платформу x86, чтобы все было согласованно.Однако выходные пути для этой конфигурации платформы не были одинаковыми для всех плат, поэтому сборки заканчивались в разных каталогах.

Когда я установил платформу на «Любой процессор», она работала нормально.Мне нужно будет пройти через все проекты, чтобы пути вывода были согласованы, чтобы все сборки выводились в нужное место.

1 голос
/ 01 июля 2011

Возможно ли проблема с пространством имен вновь созданного файла master.cs?Если главная страница находится в подпапке решения, она автоматически включит имя папки в сгенерированное определение пространства имен.

В sidenote, есть ли какие-нибудь будущие события .net в Глазго, соединенные через SDN?

1 голос
/ 01 июля 2011

> Сначала я подумал, что просто написал что-то не так в директиве главной страницы, но я проверил и перепроверил, и это не так.

Также проверил пространство имен главной страницы?

CodeBehind = "LoggedIn.master.cs"

Должно ли это быть CodeBehind="LoggedIn.Master.cs", с заглавной буквы М?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...