我正在学习Spring.Net,我创建了一个MyApplication类和一个库类MyLib,其中包含MyApplication所需的所有Spring配置文件。
我使用以下方法检索元数据:
IApplicationContext ctx = new XmlApplicationContext("assembly...");
我有三个不同的xml文件,一个(springconfiguration.xml)导入另外两个。在我尝试的开始,我的spring配置文件位于MyLib的根级别。一切都很好。
----- MyLib
-- Properties
-- References
-- commonspring.xml
-- buttonspring.xml
-- springconfiguration.xml
然后我在MyLib中创建了一些文件夹来存储我的xml文件,如果我使用子文件夹,它会失败:
以下作品:
----- MyLib
--Properties
--References
--Common
--commonspring.xml
--Gui
--buttonspring.xml
--Configuration
--springconfiguration.xml
我的springconfiguration.xml文件是:
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">
<import resource="Common/commonspring.xml"/>
<import resource="Gui/buttonspring.xml"/>
</objects>
我用以下内容检索上下文:
IApplicationContext ctx = new XmlApplicationContext("assembly://MyLib/MyLib/Configuration.springconfiguration.xml");
但是如果我使用子文件夹则会失败:
----- MyLib
--Properties
--References
--Common
--commonspring.xml
--Gui
--SpecialButton
--buttonspring.xml
--Configuration
--springconfiguration.xml
我的springconfiguration.xml文件是:
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">
<import resource="Common/commonspring.xml"/>
<import resource="Gui/SpecialButton/buttonspring.xml"/>
</objects>
我用以下内容检索上下文:
IApplicationContext ctx = new XmlApplicationContext("assembly://MyLib/MyLib/Configuration.springconfiguration.xml");
错误是:
{"Error registering object defined in 'assembly [MyLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null], resource [MyLib.Configuration.springconfiguration.xml] at line 5' : Invalid relative resource location 'Gui/SpecialButton/buttonspring.xml' to import object definitions from.\r\n<import resource=\"Gui/SpecialButton/buttonspring.xml\" xmlns=\"http://www.springframework.net\" />"}
我尝试了几种语法,我在文档中查找并没有找到任何解决方案。有人想知道问题在哪里吗?
更新 好吧,我自己发现:正确的语法是:
<import resource="Gui.SpecialButton.buttonspring.xml"/>
然后不再出现任何错误,一切正常。
答案 0 :(得分:1)
让大家知道这里是我找到的解决方案:在springconfiguration.xml中,而不是引用嵌套在文件夹中的spring配置文件:
<import resource="Gui/SpecialButton/buttonspring.xml"/>
必须写:
<import resource="Gui.SpecialButton.buttonspring.xml"/>
@marijn:谢谢你的解释,理解解决方案比找到它更好;)