Tag: plugins

为什么我的CRM插件中的所有引用属性都为null?

我正在使用早期绑定在联系人实体上编写PostUpdate插件。 不幸的是,所有应该代表1:x关系的属性都是null。 代码非常简单: * CRMcontext是通过CrmSvcUtil.exe生成的文件, * service是LocalPluginContext的IOrganizationService: using ( var serviceContext = new CRMcontext(service) ) { // This works fine var contact = serviceContext.CreateQuery().First(c => c.Id == context.PrimaryEntityId); // why is currency null after this line?! (and yes, it’s set in the entity) var currency = contact.transactioncurrency_contact; } 我按照这个例子(最后一个代码片段): http : //msdn.microsoft.com/en-us/library/gg695791.aspx 谢谢你的帮助! 编辑: /// […]

c#插件(reflection)

我在使用reflection创建插件解决方案时遇到了麻烦。 当我点击menuItem时,我想加载并在我的窗口中显示另一个程序。 我想我需要3个项目。 单击menuItem时想要加载另一个程序的客户端程序 我要加载的程序 插件类 代码客户端程序 private void nQueensToolStripMenuItem_Click(object sender, EventArgs e) { // Create an assembly object to load our classes string path = Application.StartupPath + “\\NQueens.dll”; Assembly ass = Assembly.LoadFile(path); Type objType = ass.GetType(“NQueens.NQueen”); // Create an instace of NQueens.NQueen var instance = Activator.CreateInstance(objType); // public static bool berekenQueens() objType.InvokeMember(“berekenQueens”, BindingFlags.InvokeMethod | […]

获取DateTime CRM 2011

我在使用DateTime时遇到了一些问题:使用Fetch 认为这有点错了…. DateTime scheduledstart = ((DateTime)((AliasedValue)a[“new_startdate”]).Value); tracer.Trace(“DateTime 1 Done”); DateTime enddate = ((DateTime)((AliasedValue)a[“new_enddate”]).Value); tracer.Trace(“DateTime 2 Done”); DateTime scheduledend = ((DateTime)((AliasedValue)a[“new_duedate”]).Value); 然后我添加到新的实体… if (scheduledstart != null) { Activity.Attributes.Add(“scheduledstart”, scheduledstart); } if (enddate != null) { Activity.Attributes.Add(“scheduledend”, enddate); } if (scheduledend != null) { Activity.Attributes.Add(“scheduledend”, scheduledend); } 任何想法如何使用来自fetch的AliasedValue编写DateTime? 或者更好的方法来做到这一点> 谢谢

如何从插件中的PartyList获取联系人指南?

我正在创建一个插件,触发自定义活动SMS的创建消息。 这些插件将使用第三方短信服务提供商发送实际的短信。 因此,我需要在SMS活动的“收件人”字段中获取每个联系人的手机号码。 这是一个类型的字段:PartyList。 我目前正在使用以下代码: EntityCollection Recipients; Entity entity = (Entity) context.InputParameters[“Target”]; IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); Content = entity.GetAttributeValue(“subject”); Recipients = entity.GetAttributeValue(“to”); for (int i = 0; i < Recipients.Entities.Count; i++) { Entity ent= Recipients[i]; string number = ent["MobilePhone"].ToString(); } 但这不起作用,我认为ent变量不包含任何属性。 我也尝试使用ActivityParty进行编码,但也没有运气。 我希望你们中的某个人可以帮助我。 谢谢!

MEF,为什么创建同一个导出插件的相同副本?

(1)使用下面的代码我在我的容器中得到了两个相同的导出插件,我想知道为什么: (2)我真正无法实现的其他问题:如何扩展框架以处理不同的插件类型(例如,有多个不同类型的导入,或者一个导入将所有插件存储在动态IEnumerable中)。 我想在我的静态包装类中提供一个generics方法,该方法将发现的插件作为类型和匹配元数据的函数返回。 导出的插件(位于单独的dll中,其位置在构建DirectoryCatalog时指向。 [Export(typeof(IPlugin))] //<—- If this line is commented out then only one item is imported (why?) [PluginAttribute(typeof(StrategyPlugin_Test1), "StrategyPlugin", "Plugin1")] public class StrategyPlugin_Test1 : IPlugin { public void DoSomething() { Console.WriteLine("I do something"); } } 以下代码定义了强类型元数据和导入,以及执行MEF函数并应该保存已发现插件的静态类: [MetadataAttribute] [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] public class PluginAttribute : ExportAttribute { public Type PluginType { get; set; […]

C#插件function的模式/方法

我正在开发一种新产品,最终将根据客户的个性化需求在其周围建立不同的function。 因此,我想实现能够部署插件的能力,核心应用程序将检测插件并相应地进行更改。 问题在于,该产品很可能会针对不支持System.Addin的早期版本的.Net或MEF的可能性。 那就是说,哪种模式/编程方法很适合支持C#中的插件? 我想完全远离第三方框架,尽管可以自由命名。 理想情况下,我希望能够插入插件,修改主菜单和/或上下文菜单和/或提供新服务。 在Java中,通过扩展点很好地处理了这个问题。 我基本上坚持写自己的扩展点管理器吗?

运行具有不同版本的依赖关系dll的插件的推荐方法是什么?

我有一个WCF插件服务,通过MEF加载插件并运行它们。 每个插件都是一个具有多个dll的目录,它实现了特定的接口。 我使用MEF( DirectoryCatalog )在同一个AppDomain中加载所有插件,并以通用方式运行它们(使用reflection)。 现在假设我有两个带有dll依赖项的插件: Plugin1 —-> Entities 1.0.0.1 Plugin2 —-> Entities 1.0.0.2 我在1.0.0.2中添加了一些新实体。 当我运行插件时,我得到一个偶然的错误,即新的实体在dll中不存在。 我猜错误发生,因为我在相同的AppDomain中运行代码,加载的第一个Entities.dll是将为我的所有插件提供服务的那个。 那么,如何在不创建新的appdomain的情况下运行隔离的每个插件? 有什么方法可以告诉MEF以某种方式加载所有插件依赖项? 我在网上看到了几个解决方案: 为每个插件创建一个新的appdomain – 我不想去那里 。 使用 – 当我第一次尝试它时,这不起作用,我不希望我的插件服务器更新每个程序集依赖项版本更改。 另外,我希望能够运行具有不同组件版本的插件。 用snk签署程序集 – 我还没有尝试这个,我不确定这个解决方案是否有效。 框架将如何知道他需要加载不同的程序集? 这与具有不同版本的程序集有何不同? 我是否需要以某种方式配置我的服务才能使其工作? 有没有人对我有更好的想法? 什么是运行隔离插件的推荐方法?

appdomain可以限制在一个目录中吗?

我正在开发一个插件主机。 插件应该具有他们需要的尽可能少的信任,但是我希望插件可以读取和写入文件。 可以将加载程序集的AppDomain限制为只能访问一个目录进行读写吗? 还可以理解其他选项和方法,例如将文件数据从主机流式传输到插件(读取)以及从插件传输到主机(写入)的简单方法。 如果相关:我正在使用MAF基础设施插件。 http://msdn.microsoft.com/en-us/library/bb384200.aspx

检索在optionset字段中选择的值,并在文本字段中显示该值

任何人都可以帮我在文本字段中显示一个optionset字段值..? 我想检索在optionset中选择的值,并使用插件在文本字段中显示相同的值。我在“case”实体的“update”上写这个插件…

c#插件事件处理

我编写了一个使用接口的插件系统,并且满足此合同的任何插件都在运行时加载到主系统中。 插件有效地返回插入主应用程序的TabPage,并从插件dll中进行控制。 如果插件中发生错误,则会显示标准Windows错误消息。 我想要做的是创建一个返回错误消息的事件,以便我可以在我为文本保留的区域中显示它。 我是否需要跟踪所有连接的插件/接口实例,以便能够设置一个事件来监控每个实例? 目前,我的系统循环遍历app文件夹中的dll,并且那些满足接口契约的dll被加载,每次控件被丢弃时,接口的实际实例被丢弃,然后通过加载的按钮事件将其移交给dll。 TabPage并在插件中处理。 我希望这一切都有道理。