我正在创建一系列相关的插件。每个插件都是针对不同的实体。每个插件都必须有它自己的程序集吗?我正在使用Visual Studio,并在同一个解决方案中创建了第二个项目,但我无法看到注册工具中的新步骤。Dynamics CRM 2011 - 每个与不同实体相关的插件都必须拥有自己的程序集吗?
感谢
我正在创建一系列相关的插件。每个插件都是针对不同的实体。每个插件都必须有它自己的程序集吗?我正在使用Visual Studio,并在同一个解决方案中创建了第二个项目,但我无法看到注册工具中的新步骤。Dynamics CRM 2011 - 每个与不同实体相关的插件都必须拥有自己的程序集吗?
感谢
它可以做,但不一定。这几乎是你的设计决定。试想,如果你有几类所有执行IPlugin
public class MyFirstPlugin : IPlugin
{
//implemented as per usual
}
public class MySecondPlugin : IPlugin
{
//implemented as per usual
}
如果你要注册的插件注册工具,DLL,你会看到如下结构:
- Server
- DLL
- MyFirdtPlugin
- MySecondPlugin
然后,您可以添加步骤,在每个根据需要插件。
另一种方法是让每个DLL一个插件,它会给你
- Server
- DLL1
- MyFirstPlugin
- DLL2
- MySecondPlugin
我必须承认,这似乎有点小题大做 - 但它也取决于你如何使用您的解决方案。
是的,你可以创建不同的类库项目中的每个插件,但这不是一个好的做法。我宁愿将所有插件收集到一个类库中。
请注意,从文件对话框中选择您的程序集后,您必须单击Load Assembly按钮以加载实现IPlugin接口的所有类。
你能详细说明为什么这不是好的做法吗?这不意味着如果你在一个插件中搞砸了一些东西,它会让所有其他人停止工作?我目前正在试图决定是否要走下单个项目路线或将所有插件放在一个类库中? – Ant 2013-07-11 12:04:42
除了glosrob的回答,我猜你正在使用插件注册工具来注册你的插件。如果是这样,您需要确保在将新插件添加到同一个dll之后,您需要使用注册工具更新插件dll本身,以便您可以注册您创建的新插件方法。
要回答这个问题 - 不,每个新插件都不必包含在新程序集中。
详细说明 - 在技术上可以将所有插件代码放在一个项目和一个文件中。
要警告 - 上述将是一个噩梦来管理所有的ifs和buts,所以这是一个可以但不应该的例子。
建议 - 我通常为每个实体的插件都有一个单独的项目,并使用开关处理所有消息。有时候,我可能会有两到三个程序集,但是当你到达时,你会知道什么时候该这样做。通常,一个DLL就足够了。
谢谢。我必须取消注册并重新注册dll才能显示新插件。 – Gary 2013-03-18 19:43:50
Ooo一个总是让我(即使经过多年的这样做)..当您加载DLL时,请确保您选中框以包含DLL中的所有插件。如果您以前只有一个,那么只包含这个。 – glosrob 2013-03-18 20:52:33
@加里你可以在这里看到http://i.imgur.com/gGoghOB.jpg – glosrob 2013-03-18 20:58:45