2014-02-13 3 views
0

Итак, я унаследовал проект, который, как представляется, использует Spring.net для выполнения инъекции зависимостей. Каждый исполняемый модуль реализует метод, в котором он переходит в конфигурационный файл приложения для данного модуля и вытягивает значение по линиям assembly://Config/Company.Protocol.Config/DIConfig.xml, причем средний бит «Company.Protocol.Config» немного отличается для разных исполняемых файлов, с таким же именем , но не идентичный проекту. Этот XML-файл, по-видимому, содержится в каталоге Config в базе решения, содержащего проект. Хотя я чувствую, что все немного сложно, я вижу, к чему они стремятся, сохраняя ссылки на различные процедуры обработки в этом файле DIConfig.xml, чтобы они могли быть введены.Spring.net - Маршрутизация сборки: // строка в файле конфигурации - нужен базовый каталог

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу фактически перейти к тем файлам XML с указанным выше путем, и мои попытки понять Spring.net, похоже, не настолько далеко, чтобы понять, где они планируют перейти к бит «Assembly: //». Я получаю ошибку Could not resolve resource location. Я пробовал связаться с человеком, который в последний раз работал с кодом, но, видимо, они тоже унаследовали его и избегали возиться с ним, опасаясь его сломать.

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

ответ

2

assembly:// сообщает Spring.net использовать протокол «сборки», чтобы найти ресурс. Он имеет общий формат assembly://<AssemblyName>/<NameSpace>/<ResourceName>. Поэтому в случае assembly://Config/Company.Protocol.Config/DIConfig.xml должна быть сборка с именем Config (не обязательно такая же, как имя проекта, проверьте свойства). Файл xml содержится в исходном проекте, который содержит источник сборки.

Папки в проекте могут добавляться в пространство имен; поэтому, если корневое пространство имен проекта равно Company.Protocol, вы найдете свой xml-файл в папке с именем Config.

Файл xml должен быть помечен как внедренный ресурс. Дополнительную информацию см. В разделе 5.2.2.1 от the docs.

+0

Как выясняется, проблема заключается в том, что проект, содержащий встроенный XML-файл, необходимо очистить и перекомпилировать, прежде чем я смогу увидеть XML-файл, но вы единственный, кто ответил, и это помогло мне получить скидку несколько возможностей, поэтому я зачисляю вам ответ. –

+0

Ах. И я еще более просвещен после прочтения главы 7. Он все еще работает несколько прерывисто, но это лучше, чем раньше. –

+0

Надеюсь, это дойдет до вас. В настоящее время код работает только в режиме Release. Проект Config, в котором встроенный ресурс существует, называется Config. 'Company.Protocol.Config' - это пространство имен по умолчанию. Встроенный файл есть. Я попытался проверить форумы Spring.Net, но их проверка изображения нарушена (я получаю разбитые изображения на работе и дома), что означает, что я не могу зарегистрироваться, и я не могу связаться с ними, чтобы сообщить им, что он сломан , Я могу решить проблему на данный момент, предоставив явно исправленный файл и перенаправляя его в режим Debug, но он уродлив. –

Смежные вопросы