public static UnityPluginParameter ParseUnityPluginParameter( Configs.UnityPlugins configs, Configs.UnityManagedPluginProject projectConfig) { Ensure.Argument.NotNull(configs, nameof(configs)); Ensure.Argument.NotNull(projectConfig, nameof(projectConfig)); StringToVersionInfo versions = null; if (projectConfig.ForMultipleVersions) { versions = projectConfig.Versions ?? new StringToVersionInfo(); foreach (var kvp in configs.DefaultVersions) { var ver = kvp.Key; var info = kvp.Value; if (!versions.ContainsKey(ver)) { versions.Add(ver, info); } } } var parameter = new UnityPluginParameter { ForEditor = projectConfig.ForEditor, Versions = versions?.ToDictionary(p => UnityVersion.Parse(p.Key), p => p.Value) }; return(parameter); }
public static void SetupUnityPluginProject(VSProject project, UnityPluginParameter parameter) { Ensure.Argument.NotNull(project, nameof(project)); Ensure.Argument.NotNull(parameter, nameof(parameter)); var versions = parameter.Versions; if (versions == null) { return; } project.RemovePropertyGroups(project.ParseConditionalConfigurationPropertyGroups((string)null)); project.RemoveItemGroups(project.ParseConditionalConfigurationItemGroups((string)null)); var propertyGroupAnchor = project.DefaultPropertyGroup; var itemGroupAnchor = project.DefaultReferenceGroup; foreach (var kvp in versions) { var ver = kvp.Key; var info = kvp.Value; foreach (var type in EnumTraits <ProjectConfigurationType> .Values) { SetupConfigurationGroupForUnity( propertyGroupAnchor = project.CreatePropertyGroupAfter(propertyGroupAnchor), type, parameter.ForEditor, ver); var references = info.AssemblyReferences; if (!CollectionUtil.IsNullOrEmpty(references)) { SetupReferenceGroupForUnity( itemGroupAnchor = project.CreateItemGroupAfter(itemGroupAnchor), type, parameter.ForEditor, ver, references); } } } }