简体   繁体   English

Dynamics CRM 2011:托管解决方案或部署从DEV到PRD的更改

[英]Dynamics CRM 2011: Managed Solutions or deploying changes from DEV to PRD

For Dynamics CRM 2011, Microsoft suggests moving entity customizations from DEV to PRD by packaging the changes as managed (or unmanaged) solutions. 对于Dynamics CRM 2011,Microsoft建议通过将更改打包为托管(或非托管)解决方案,将实体自定义从DEV移动到PRD。 Unmanaged is bad because you cannot remove the entities when you need to (deleting the solution only deletes the container, entities contained in the solution remain). 非托管是不好的,因为您无法在需要时删除实体(删除解决方案只删除容器,解决方案中包含的实体仍然存在)。 In most lab examples during training, you'd customize the system, then export the customized entity as a managed solution, then import it into production. 在培训期间的大多数实验示例中,您将自定义系统,然后将自定义实体导出为托管解决方案,然后将其导入生产中。 This solution-based approach is clean, makes it easier to control what's in PRD, bundle related entities together, track dependencies, etc, so I get that. 这种基于解决方案的方法很简洁,可以更容易地控制PRD中的内容,将相关实体捆绑在一起,跟踪依赖性等,所以我明白了。

There are times, however, when you need to dump the org on the DEV server and restore from PRD (to address a data-specific issue or for other reasons). 但是,有时您需要在DEV服务器上转储组织并从PRD恢复(以解决特定于数据的问题或其他原因)。 We do that by disabling, then deleting the DEV org, then asking the DBA team to restore the CRM database from production, then we import the org back to the DEV server. 我们这样做是通过禁用,然后删除DEV组织,然后要求DBA团队从生产中恢复CRM数据库,然后我们将组织导回DEV服务器。 But if we implement this “managed solutions”-based change migration process, won't we lose the ability to change our entities after we dump DEV and recreate it from PRD, where these solutions are sitting in read-only mode? 但是,如果我们实施这种基于“托管解决方案”的变更迁移流程,在我们转储DEV并从PRD重新创建它后,我们是否会失去更改我们实体的能力,这些解决方案处于只读模式? If we enable customizations in these managed solutions, will we be able to add new entities to the solutions or remove entities from inside the solutions without deleting the entire solution? 如果我们在这些托管解决方案中启用自定义,我们是否能够在解决方案中添加新实体或从解决方案中删除实体而不删除整个解决方案? Because I thought managed solutions are treated as a single unit of code, so it's either delete all or delete none. 因为我认为托管解决方案被视为一个单独的代码单元,所以它要么全部删除,要么全部删除。 Interested in learning how others have resolved this issue. 有兴趣了解其他人如何解决这个问题。

One way we have handled this is using a seperate clean dev machine which we use to manage the configurations as the "configuration master". 我们处理这个的一种方法是使用一个单独的干净开发机器,我们用它来管理配置作为“配置主机”。 That machine is not used for any other dev or test work. 该机器不用于任何其他开发或测试工作。 The dev machines for plugsin, etc. can be rebuilt from prod, but this machine continues to be the master for all solutions. 用于插件等的开发机器可以从prod重建,但是这台机器仍然是所有解决方案的主人。 Not an ideal solution, but it does avoid the "feature gap" of being able to convert managed solutions to unmanaged (maybe through some password facility) 不是一个理想的解决方案,但它确实避免了能够将托管解决方案转换为非托管(可能通过某些密码设施)的“功能差距”

I would advise against using solutions in these type of dev-to-testing-to-prod situation. 我建议不要在这些类型的dev-to-testing-to-prod情况下使用解决方案。

If you are unsure about this try to remove an entity in your dev environment and publish the change to your production environment. 如果您对此不确定,请尝试删除开发环境中的实体并将更改发布到生产环境。

Solutions are inclusive meaning that CRM doesnt remove fields and entities that where deleted in your solution. 解决方案具有包容性意味着CRM不会删除解决方案中删除的字段和实体。

The only way to remove an entity is to uninstall your solution therefore deleting the production data in all entities covered by your solution! 删除实体的唯一方法是卸载解决方案,从而删除解决方案涵盖的所有实体中的生产数据!

While in theory solutions seem perfect they are only usefull for third party vendors. 虽然理论上解决方案似乎很完美,但它们仅对第三方供应商有用。

The goal of beeing able to rollback by uninstalling your solution is a pipe dream. 通过卸载解决方案来实现回滚的目标是一个梦想。 Consider a data model update that involves data conversion. 考虑涉及数据转换的数据模型更新。 No magic function will reverse that. 没有神奇的功能可以扭转这种局

It is a far simpler and reliable to restore your backup. 恢复备份更加简单可靠。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM