.Net CodeBase元素

时间:2012-03-13 16:41:37

标签: .net

我已经回顾了其他一些关于如何让CLR找到不在同一文件夹或可执行文件的任何子文件夹中的程序集的帖子,但我无法让它为我工作。 ClassLibrary1.dll是一个无符号程序集。示例显示:

<configuration> 
<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
        <dependentAssembly> 
            <assemblyIdentity name="ClassLibrary1"/> 
            <codeBase version="1.0.0.0"                    
                href=file:///C:\somepath\subfolder\ClassLibrary1.dll"/> 
        </dependentAssembly> 
    </assemblyBinding> 
</runtime> 
</configuration> 

我创建了一个控制台应用程序并在其配置文件中添加了正确的路径,但仍然收到一条消息,指出它无法找到ClassLibrary1.dll。我使用了FUSLOGVW,它甚至没有检查CodeBase元素中提供的文件夹。有谁知道为什么这不起作用?

1 个答案:

答案 0 :(得分:2)

来自MSDN

  

如果程序集具有强名称,则代码库设置可以位于本地Intranet或Internet上的任何位置。如果程序集是私有程序集,代码库设置必须是相对于应用程序目录的路径

这意味着如果您不对程序集进行签名,则它必须位于应用程序文件夹中或应用程序文件夹的子文件夹中。如果要将应用程序放在c:\ Program Files \ MyApplication中,并将程序集放在c:\ MyAssemblies中,则必须对程序集进行签名。