C# 使用组件进行开发,但装运时不使用组件

C# 使用组件进行开发,但装运时不使用组件,c#,windows,visual-studio,deployment,.net-assembly,C#,Windows,Visual Studio,Deployment,.net Assembly,我为一个叫BigClient的客户工作。BigClient中的机器安装了一个名为BigSoftware的服务软件。但是我的电脑没有安装这个大软件。因此,当我开发一个在这个大软件上运行的应用程序时,我需要从这个大软件的lib文件夹中取出一个名为TinyDll.dll的程序集文件,并将它复制到我的计算机上,然后从那里引用它。因此,问题来了,我应该如何编写代码并配置visual studio(C#)来实现: 当我在BigClient中部署时,我不应该将这个TinyDll.dll与我的应用程序一起发布。

我为一个叫BigClient的客户工作。BigClient中的机器安装了一个名为BigSoftware的服务软件。但是我的电脑没有安装这个大软件。因此,当我开发一个在这个大软件上运行的应用程序时,我需要从这个大软件的lib文件夹中取出一个名为TinyDll.dll的程序集文件,并将它复制到我的计算机上,然后从那里引用它。因此,问题来了,我应该如何编写代码并配置visual studio(C#)来实现:

  • 当我在BigClient中部署时,我不应该将这个TinyDll.dll与我的应用程序一起发布。我的应用程序应该从其计算机上的全局程序集缓存加载此TinyDll.dll

  • 当我在本地计算机上部署时,我的应用程序应该从本地文件夹中引用这个TinyDll.dll


  • 编辑:最后我发现我只需要TinyDll.dll来编译我的解决方案。但是这个TinyDll.dll不应该包含在我的部署中(因为否则我违反了许可协议)。然后,我部署的应用程序将自动从GAC加载它。

    关于动态程序集加载,您可以使用一些方法和最佳实践,但对于大多数开发环境类型的问题,在编写代码之前,我喜欢先查看流程,这只会帮助您编写代码


    我想到的解决方案是:将这个TinyDll.dll放在本地开发机器GAC中。然后,无论发生什么情况,您的解决方案都将从同一位置加载。

    您没有问题。。。1/2似乎是有效的合理陈述,所以不确定你在寻找什么。。。(请注意,在大多数情况下,仅在本地复制TinyDll.Dll只允许您生成代码,而不允许您对其进行测试-例如,在SharePoint中)@AlexeiLevenkov如果我使用TinyDll.Dll生成解决方案,然后在不使用TinyDll.Dll的情况下发布,我的应用程序会自动从BigClient机器的全局程序集缓存加载TinyDll.dll吗?显然,无论您是否在本地有一个程序集,GAC的程序集都会加载。所以“TinyDll”是否随代码一起提供并不重要。@AlexeiLevenkov OK。谢谢我还确认了TinyDll未随附的情况,我的应用程序将从GAC加载TinyDll。有许多开发机器,我无法将TinyDll.dll复制到每台机器上。嗯,但这启发了我。我应该首先检查GAC,如果GAC中存在任何版本,则使用GAC提供的dll。如果没有,我会检查本地文件夹并从那里加载dll。