定义具有解决方案范围的.NET扩展方法
时间:2020-03-06 15:00:31 来源:igfitidea点击:
我有一些现在经常使用的"助手"风格扩展方法(它们大多非常简单,直观,并且出于善而不恶的目的工作,因此请不要在此讨论是否应使用它们)。它们在很大程度上扩展了核心.NET CLR类。
当前,我必须将包含扩展方法的" ExtensionMethods.cs"文件复制到解决方案中的每个新项目,以便能够在多个项目中使用它们。
是否可以定义扩展以在解决方案中处理多个项目,或者将它们包装在"扩展" dll中,还是将它们限制在项目范围内?
编辑尽管"专用项目"的答案是完全正确的,但我选择了马克思主义,因为我更喜欢他所提供的方法。感谢到目前为止的所有答案,我已经对它们全部进行了升级,因为它们都是好的答案
解决方案
最好的方法是将它们全部放在一个项目中并创建一个DLL。然后,我们可以将该项目包含为项目引用,也可以将DLL包含为二进制引用(可能是更好的选择)。
我们可以将扩展放在一个单独的项目中,并将该项目包含在我们正在制作的每个新解决方案中。
请注意版本控制,例如,当其他应用程序尝试对扩展项目进行更改时,应重新测试所有使用该方法的项目。
Scott Dorman在他的帖子中也是正确的:如果我们不希望更改它们,则可以将它们编译为DLL库,并将其包含在新项目中(而不是包含未编译的项目)。
为.NET平台扩展创建一个项目,然后在每个应用程序项目中引用该项目。不用说:在这个项目中,所有平台的东西,只有平台的东西;应用程序内容进入应用程序项目。
我们可能还会研究各种平台库,例如Umbrella,它提供了基础平台的扩展套件。
如果我们不想只为扩展方法创建整个项目,则可以将同一文件链接到单独的项目中,而无需复制该文件:
- 在解决方案资源管理器中,选择目标项目。
- 选择项目菜单。
- 选择添加现有项。
- 在"添加现有项目"对话框中,选择要链接的项目。
- 从"打开"按钮下拉列表中,选择"添加为链接"。