#c# #asp.net #precompiled
#c# #asp.net #предварительно скомпилированный
Вопрос:
Я работаю над обновляемым C # ASP.NET предварительно скомпилированный веб-сайт 2.0. Поскольку исходный код не может быть изменен (исходный код недоступен), я добавляю код непосредственно в файлы aspx (внутри тега script).
Проблема в том, что много идентичного кода должно быть скопировано между несколькими aspx-файлами. Я создал внешнюю библиотеку, чтобы избежать дублирования кода, а затем ссылался на эту библиотеку с веб-сайта. Однако я не могу получить доступ к классам библиотеки из файлов aspx. Я попытался добавить директиву импорта в верхней части страницы, но она вообще не работает.
Какой рекомендуемый способ избежать дублирования кода?
Ответ №1:
Вы можете скопировать сборку, содержащую общие функциональные возможности, в bin
папку и сослаться на нее в <assemblies>
разделе web.config
. Теперь вы можете использовать его на страницах aspx. Но, честно говоря, это кажется извращенным способом изменить ASP.NET сайт. Обычно вы просто извлекаете исходный код из системы управления версиями, применяете необходимые изменения, регистрируете, создаете, отправляете на промежуточный этап, проверяете, отправляете в производство. Так и должно быть сделано. Любая другая отправка в производственный процесс — это просто … (поместите любое оскорбление, которое вы хотели бы здесь).
Комментарии:
1. Это правильный способ добавить ссылку внутри тега assemblies: <add assembly=»MyCommonLib»/> ? Я попробовал это таким образом, но не смог вызвать какой-либо класс со страницы aspx. Хотелось бы, чтобы у меня был доступ к исходному коду, но, к сожалению, это не вариант. Большое вам спасибо за ваше время!
2. @jdecuyper, IIRC, вы должны использовать полное имя сборки :
<add assembly="MyCommonLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxx" />
.3. Он работал без ключа публикации, я думаю, это необходимо только тогда, когда вы используете подписанную сборку, верно? Большое спасибо!