2009-12-02 57 views
1

我目前得到一个错误,试图解决我的IDataAccess类。Unity配置和相同的组装

属性'type'的值无法解析。错误是:无法加载文件或程序集'TestProject'或它的一个依赖项。该系统找不到指定的文件。 (C:\ Source \ TestIoC \ src \ TestIoC \ TestProject \ bin \ Debug \ TestProject.vshost.exe.config第14行)

这是在WPF应用程序项目中。

什么是正确的语法来引用你目前的大会?有没有办法做到这一点?我知道在一个更大的解决方案中,我将从单独的程序集中提取类型,因此这可能不是问题。但是对于一个小型独立测试项目来说,正确的做法是什么?注意:我现在只对XML配置感兴趣,而不是C#(在代码)配置中。

UPDATE:查看所有评论

我的XML配置:

<configuration> 
    <configSections> 
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" /> 
    </configSections> 
    <unity> 
    <typeAliases> 
     <!-- Lifetime manager types --> 
     <typeAlias alias="singleton" type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager, Microsoft.Practices.Unity" /> 
     <typeAlias alias="external" type="Microsoft.Practices.Unity.ExternallyControlledLifetimeManager, Microsoft.Practices.Unity" /> 
     <typeAlias alias="IDataAccess" type="TestProject.IDataAccess, TestProject" /> 
     <typeAlias alias="DataAccess" type="TestProject.DataAccess, TestProject" /> 
    </typeAliases> 
    <containers> 
     <container name="Services"> 
     <types> 
      <type type="IDataAccess" mapTo="DataAccess" /> 
     </types> 
     </container> 
    </containers> 
    </unity> 
</configuration> 

回答

0

这看上去很好。你确定你的程序集名称是正确的吗?检查项目的偏好,以确保您的程序集的名称是正确的:

  1. 右键单击您的项目,然后单击属性
  2. 点击左侧
  3. 看“集结号值的应用程序选项卡上名称“字段。

有时候,如果你已经重命名了你的项目,这个字段仍然是旧值。

这可能不是问题,但它是最简单的检查。如果您发现这不是问题,请回复此问题,我会发布我的其他想法。

另外,您可能会考虑将您的示例发布为.zip文件,以便我们查看它。

+0

一个问题是应用程序项目是TestProject,但是当Visual Studio在调试中运行它时,它会将其作为TestProject运行。 vhost.exe。我在XML文件中添加了虚拟主机的名字,这没有帮助。 – BuddyJoe 2009-12-03 17:36:50

+0

我无法上传样本,因为为了不被这个问题瘫痪,我将代码拆分成两个程序集,以便我可以继续前进。一个类库项目和一个WPF项目。 – BuddyJoe 2009-12-03 18:00:57

+0

DLL的名称和程序集的名称没有任何关系。这就是为什么我要求你询问大会的名字。 – 2009-12-03 19:19:12

0

我刚刚有同样的问题。这适用于我: 在Microsoft.Practices.Unity的属性中将“Copy local”设置为true。 您还应该添加对Microsoft.Practices.ObjectBuilder2的引用(Microsoft.Practices.Unity依赖于它)