/IronPython_Main/Hosts/Silverlight/Microsoft.Scripting.SilverLight/DynamicAppManifest.cs
C# | 106 lines | 56 code | 9 blank | 41 comment | 3 complexity | fcd3c9dfb24b0fa52ad86388f538431e MD5 | raw file
Possible License(s): GPL-2.0, MPL-2.0-no-copyleft-exception, CPL-1.0, CC-BY-SA-3.0, BSD-3-Clause, ISC, AGPL-3.0, LGPL-2.1, Apache-2.0
- /* ****************************************************************************
- *
- * Copyright (c) Microsoft Corporation.
- *
- * This source code is subject to terms and conditions of the Apache License, Version 2.0. A
- * copy of the license can be found in the License.html file at the root of this distribution. If
- * you cannot locate the Apache License, Version 2.0, please send an email to
- * dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound
- * by the terms of the Apache License, Version 2.0.
- *
- * You must not remove this notice, or any other, from this software.
- *
- *
- * ***************************************************************************/
-
- #if CLR2
- using Microsoft.Scripting.Utils;
- #endif
-
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Windows;
- using System.Reflection;
- using System.IO;
- using System.Text.RegularExpressions;
-
- namespace Microsoft.Scripting.Silverlight {
- public class DynamicAppManifest {
-
- #if SILVERLIGHT_3
- /// <summary>
- /// List of valid assemblies to be inside Microsoft.Scripting.slvx
- /// </summary>
- private static List<string> _assemblyNames = new List<string>() {
- "Microsoft.Scripting.Core",
- "Microsoft.Scripting",
- "Microsoft.Dynamic",
- "Microsoft.Scripting.Silverlight"
- };
- #endif
-
- /// <summary>
- /// List of all dynamic language assemblies loaded. Contains assemblies
- /// from AssemblyParts after construction. After LoadAssemblies is
- /// called, any dynamic language assemblies that were loaded as part of
- /// ExternalParts is now part of this list.
- /// </summary>
- public List<Assembly> Assemblies { get; private set; }
-
- /// <summary>
- /// List of all dynamic language extensions found in the AppManifest.
- /// </summary>
- public List<Uri> Extensions { get; private set; }
-
- /// <summary>
- /// "Initializes "Assemblies" with any AssemblyParts, and "Extensions"
- /// with any ExtensionParts
- /// </summary>
- public DynamicAppManifest() {
- Assemblies = AssemblyParts();
- #if SILVERLIGHT_3
- Extensions = DLRExtensionParts();
- #else
- Extensions = new List<Uri>();
- #endif
- }
-
- /// <summary>
- /// Get all AssemblyParts from the AppManifest, as loaded Assembly instances.
- /// </summary>
- public List<Assembly> AssemblyParts() {
- var result = new List<Assembly>();
- foreach (var part in Deployment.Current.Parts) {
- try {
- result.Add(XapPAL.PAL.LoadAssembly(Path.GetFileNameWithoutExtension(part.Source)));
- } catch (Exception) {
- // skip
- // TODO this shouldn't catch all exceptions ... just any
- // exceptions that can be thrown the try block ...
- }
- }
- return result;
- }
-
- #if SILVERLIGHT_3
- /// <summary>
- /// Get all DLR/language-specific ExtensionParts, which is just the
- /// extension containing the Microsoft.* assemblies.
- /// </summary>
- /// <returns></returns>
- private List<Uri> DLRExtensionParts() {
- var dlrExtensions = new List<Uri>();
- if (Type.GetType("System.Windows.ExtensionPart, System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e") != null) {
- foreach (var externalPart in Deployment.Current.ExternalParts) {
- var extensionPart = (ExtensionPart)externalPart;
- if (Regex.IsMatch(extensionPart.Source.ToString(), "Microsoft.Scripting.slvx")) {
- dlrExtensions.Add(extensionPart.Source);
- }
- }
- }
- return dlrExtensions;
- }
- #endif
- }
- }