从路径加载程序集,而不将其复制到bin文件夹
本文关键字:复制 bin 文件夹 加载 路径 程序集 | 更新日期: 2023-09-27 18:08:58
我有一个简单的c#应用程序,我想从C:'..'..myassembly.dll
引用一个程序集,而不把它复制到bin文件夹。
我有一种方法来改变如何汇编被引用/加载?
编辑:程序集不是gac
实际上可以在运行时通过在配置中使用<codeBase>
标记:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MyAssembly2" culture="neutral" publicKeyToken="307041694a995978"/>
<codeBase version="1.0.1524.23149" href="FILE://C:/Myassemblies/MyAssembly2.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
您可以参考MSDN以获得更具体的信息。此解决方案的缺点是您必须手动指定程序集版本。
你的问题有多种解决方案
为了避免复制库到输出文件夹设置Copy Local
为false通过选择。dll属性。
选项1:
在您的配置文件中包含以下部分,并允许运行时从您指定的位置加载。
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MyAssembly" publicKeyToken="2d65620afb84f19d" />
<codeBase version="1.0.0.0" href="C:'..'..myassembly.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
选项2:
众所周知的选项,使用反射来加载程序集。
Assembly.Load(@"C:'..'..myassembly.dll")