我正在开发一个目前有两个项目的Visual Studio解决方案(稍后会有更多项目)。一个项目是我去年建立的成熟的C#/ Winforms应用程序(将其视为原型)。另一个是DLL,它将与原型做同样的事情,但通过不同的应用程序。我想重新使用原型中的代码(让我们在DLL中调用有问题的方法 SyncInvoices()),因为原型代码工作得非常好b / c我已经把bug弄出来了它。包含SyncInvoices的类被烘焙到原型应用程序中,而不是它自己的DLL。
我已经将包含SyncInvoices()的类添加到DLL的项目中(作为链接文件,因为它已经存在于解决方案的其他位置)。我可以在DLL项目中实例化该类并调用SyncInvoices(),但编译器会抛出与GUI元素相关的错误。
问题是SyncInvoices()对Prototype应用程序的GUI有一些线程安全的调用,主要用于将消息/错误传递回接口。
DLL没有GUI,因此不需要运行该代码。它仍构建该类中的其余方法,即使它们未被使用。有没有办法告诉编译器在构建DLL时忽略这些行?我宁愿不维护两组几乎完全相同的代码,特别是当这两个项目是同一解决方案的一部分时。
我考虑使用#define / #if块来分区代码,但我不确定C#是否以这种方式工作 - 大部分时间我看到那些使用的是保持调试代码不会结束生产。如果可以告诉应用程序通过#if块包含/排除代码,我该如何设置值?
我是否应该咬紧牙关并制作一份没有违规代码的方法副本?
答案 0 :(得分:2)
如果没有更具体的细节,很难给出正确的答案,但我通常会说你通过事件处理这个问题。无论原型中是否发生了对GUI的任何调用,这通常都是某种形式的事件,当您实例化新类时,您可以在原型中订阅它。
是否有任何特别有问题的案例你可以提供更多细节?