Heureusement Microsoft sait répondre avec les bonnes solutions aux problèmes, et l'accélération du rythme des releases nous permet de bénéficier de nouvelles fonctionnalités beaucoup plus souvent.
Dans cet article, je voudrais vous présenter comment lire et définir les valeurs des variables d'environnement depuis un plugin C#.
En fait, la fonctionnalité de variable d'environnement ne se présente pas dans une seule table, mais dans deux tables :
- Définition de la variable d'environnement
- Valeur de la variable d'environnement
Lorsque vous créez une nouvelle variable d'environnement dans votre solution, cela crée en fait la variable d'environnement Définition. Qui pourra être déployée plus tard avec votre solution. Si vous souhaitez conserver des valeurs différentes pour tous les environnements, la définition suffit à être importée dans les solutions. Vous n'aurez probablement pas besoin de déployer les valeurs.
Le code ci-dessous vous aidera à initialiser et à définir les valeurs des variables dans l'environnement cible.
public static void SetEnvVariable(IOrganizationService service, string variableName, string variableValue)
{
// Search for Variable Definition by name
QueryExpression query2 = new QueryExpression("environmentvariabledefinition");
query2.ColumnSet = new ColumnSet("environmentvariabledefinitionid");
query2.Criteria.AddCondition("schemaname", ConditionOperator.Equal, variableName);
EntityCollection definitionResults = service.RetrieveMultiple(query2);
if (definitionResults.Entities.Count > 0)
{
Entity definition = definitionResults.Entities[0];
// Research the environment variable by its name
QueryExpression query = new QueryExpression("environmentvariablevalue");
query.ColumnSet = new ColumnSet("environmentvariablevalueid", "value");
query.Criteria.AddCondition("schemaname", ConditionOperator.Equal, variableName);
EntityCollection results = service.RetrieveMultiple(query);
if (results.Entities.Count > 0)
{
Entity variable = results.Entities[0];
variable["value"] = variableValue;
// Updates the value of the environment variable
service.Update(variable);
}
else
{
Entity variable = new Entity("environmentvariablevalue");
variable["environmentvariabledefinitionid"] = new EntityReference("environmentvariabledefinition", definition.Id);
variable["schemaname"] = variableName;
variable["value"] = variableValue;
// Creates the value of the environment variable
service.Create(variable);
}
}
}