Тип или пространство имен не могут быть найдены только в публикации - PullRequest
3 голосов
/ 26 января 2012

У меня есть веб-решение с Visual Studio 2010 и ASP.Net 4.0.В этом решении есть веб-сайт, а также библиотека классов.

Я добавил новый элемент управления пользователя на сайт и смог собрать все.Я даже смог опубликовать с новым контролем.Проблема возникает, когда я пытаюсь сослаться на имя класса этого элемента управления в другой части кода.Когда я делаю это, я все еще могу построить / перестроить все решение.Но когда я пытаюсь опубликовать, я получаю сообщение об ошибке «тип или имя пространства имен не могут быть найдены».

Когда мы публикуем, мы всегда ОТКЛЮЧАЕМ клетку «Разрешить этот предварительно скомпилированный сайт быть обновляемым», и мы всегда проверяемполе «Использовать фиксированные имена и одностраничные сборки».

Если я сделаю публикацию и ОТКЛЮЧИТЕ поле «Использовать фиксированные имена и одностраничные сборки», оно будет опубликовано очень хорошо.Но по какой-то причине я не могу заставить его публиковать с этим флажком ПРОВЕРЕНО, что мне нужно сделать.

Я пытался:

Очистка раствора

Перезапуск Visual Studio

Перезапуск компьютера

Очистка папки временных файлов .net

Повторное создание элемента управления

Размещение всего на сайте в пространстве имен

Буду признателен за любую помощь или понимание.

Спасибо.

РЕДАКТИРОВАТЬ:

Я понял это.Я добавлял этот новый элемент управления динамически.Но я не осознавал, что он также должен быть зарегистрирован на странице, на которой я его использую.После регистрации управления все заработало как положено

Ответы [ 3 ]

1 голос
/ 05 июля 2013

Если вы хотите использовать свой веб-элемент управления динамически, при использовании других элементов управления .net, таких как текстовое поле, метка и т. Д., Вам необходимо выполнить следующие действия.

(1) Добавьте свойство ClassName в директиву управления, как показано ниже (в файле ascx)

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="CustomControl.ascx.cs"
Inherits="CustomControl" ClassName="CustomControl" %>

Примечание: Убедитесь, что оба значения ClassName & Inherits совпадают с именами классов в файле CS.

(2) Добавьте директиву Reference на страницу, где вы хотите динамически использовать свой веб-элемент управления

<%@ Reference Control="~/usercontrol/CustomControl.ascx" %>

Примечание: директива Reference отличается от директивы Register.

(3) Теперь вы можете динамически добавлять свой пользовательский элемент управления в любом месте на вашей странице, как показано ниже

ASP.CustomControl cuCtrl = (ASP.CustomControl)LoadControl("~/usercontrol/CustomControl.ascx");
//add dynamically created custom control to an existing panel or any container control on your page
pnlDemo.Controls.Add(cuCtrl);

Примечание: Вы всегда можете включить пространство имен ASP в using;)

После этого вы не должны столкнуться с какими-либо проблемами при публикации, даже если выбрана опция Allow this precomplied site to be updatable.

0 голосов
/ 30 октября 2013

Я пытался это сделать, и у меня все еще остается та же проблема при публикации, либо с тегом ссылки, либо с тегом регистрации, который он не публикует. Единственный способ работать сейчас - снять флажок «обновляемый сайт»

0 голосов
/ 27 января 2012

Я понял это.Я добавлял этот новый элемент управления динамически.Но я не осознавал, что он также должен быть зарегистрирован на странице, на которой я его используюПосле регистрации управления все заработало как положено.

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