当我们创建一个新的C#项目并引用一个dll时,该dll在编译项目时会被复制到项目的输出目录中。
有没有一种方法可以引用 dll 文件而不将它们复制到项目的输出目录,并让可执行文件在运行时使用它们(类似于Assemblies
如果我没错的话)?
我尝试访问参考 dll 的属性,并更改了Copy Local
to False
但它没有帮助(可能是因为该 dll 依赖于该 dll 目录中的其他 dll)。
有什么办法可以做到这一点吗?
实际上你可以将程序集复制到GAC https://en.wikipedia.org/wiki/Global_Assembly_Cache但这并不总是一个理想的解决方案。
您必须记住,复制到 GAC 的每个程序集都必须是强命名。如果您的项目使用一些 NuGet 包,那么将所有这些包安装到 GAC 中将会出现问题。我相信这也不是使用 NuGet 的目的。
另一种选择是从默认的不同目录加载 DLLbin
文件夹使用<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>
但据我记得在运行时这是可能的。
编辑:由于您的问题是您必须引用正在开发的 SDK,我认为 GAC 和codeBase
将工作。一件事是版本控制问题(您必须参考特定的 SDK 版本),另一件事是您应该在新的 SDK 发布后重新编译您的工具,因为一些元数据存储在您的程序集中,这些元数据可能会随着新的 SDK 版本而过时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)