Декларативный синтаксис выполнения этого в самом файле ascx предполагает наличие файла в месте, указанном в объявлении реестра. Если этот файл не существует, то компилятор не знает, как разрешить ссылку.
Как правило, если вы создаете элементы управления, предназначенные для повторного использования в других веб-приложениях, их следует создавать как пользовательские элементы управления сервером; не как пользовательский контроль. Инфраструктура управления сервером и базовые классы предназначены для повторного использования и упаковки. Создание серверных элементов управления сначала занимает немного больше времени и усилий, но не так много, и после того, как вы сделаете это один или два раза, это станет довольно просто.
Единственное другое решение, которое я могу придумать, - убедиться, что ваша сборка / компиляция сбрасывает фактические файлы ascx в фиксированное место в потребляющем веб-проекте. Таким образом, ваши потребляющие страницы будут иметь правильный путь для использования в директиве register, и файл может быть найден компилятором. Вы можете использовать программный код для динамической загрузки элементов управления, используя Page.LoadControl (). Файл ascx все еще должен существовать физически, но использование выделенного кода для добавления элемента управления на страницу позволяет добавить некоторый интеллект к процессу, читая путь из конфигурации и т.п.