Esempio n. 1
0
        private static async Task VerifyOptionSetsAsync(Workspace workspace, string language)
        {
            var assetBuilder = new AssetBuilder(workspace.CurrentSolution);
            var serializer   = new Serializer(workspace.Services);

            var asset = assetBuilder.Build(workspace.Options, language, CancellationToken.None);

            using (var stream = SerializableBytes.CreateWritableStream())
                using (var writer = new ObjectWriter(stream))
                {
                    await asset.WriteObjectToAsync(writer, CancellationToken.None).ConfigureAwait(false);

                    stream.Position = 0;
                    using (var reader = new ObjectReader(stream))
                    {
                        var recovered        = serializer.Deserialize <OptionSet>(asset.Kind, reader, CancellationToken.None);
                        var assetFromStorage = assetBuilder.Build(recovered, language, CancellationToken.None);

                        Assert.Equal(asset.Checksum, assetFromStorage.Checksum);

                        // option should be exactly same
                        Assert.Equal(0, recovered.GetChangedOptions(workspace.Options).Count());
                    }
                }
        }
Esempio n. 2
0
        public void EmptyAssetChecksumTest()
        {
            var document     = new AdhocWorkspace().CurrentSolution.AddProject("empty", "empty", LanguageNames.CSharp).AddDocument("empty", SourceText.From(""));
            var assetBuilder = new AssetBuilder(document.Project.Solution);

            var source   = assetBuilder.Build(document.State, document.GetTextAsync().Result, CancellationToken.None);
            var metadata = assetBuilder.Build(new MissingMetadataReference(), CancellationToken.None);
            var analyzer = assetBuilder.Build(new AnalyzerFileReference("missing", new MissingAnalyzerLoader()), CancellationToken.None);

            Assert.NotEqual(source.Checksum, metadata.Checksum);
            Assert.NotEqual(source.Checksum, analyzer.Checksum);
            Assert.NotEqual(metadata.Checksum, analyzer.Checksum);
        }
Esempio n. 3
0
        private static Asset BuildAsset(AssetBuilder builder, string kind, object value)
        {
            switch (kind)
            {
            case WellKnownChecksumObjects.AnalyzerReference:
                return(builder.Build((AnalyzerReference)value, CancellationToken.None));

            case WellKnownChecksumObjects.MetadataReference:
                return(builder.Build((MetadataReference)value, CancellationToken.None));

            default:
                throw ExceptionUtilities.UnexpectedValue(kind);
            }
        }
Esempio n. 4
0
        public static void Main(string[] args)
        {
            // Create dictionary of strings
            Dictionary <string, string> strings = new Dictionary <string, string> {
                { "en:hello", "Hello World!" }
            };

            #region Snippet
            // Create AssetBuilder
            IAssetBuilder builder = new AssetBuilder();
            // Add IAssetSource that adds cache
            builder.AddCache();
            // Add IAssetSource that adds strings
            builder.AddStrings(strings, LineParameterPrinter.Default);
            #endregion Snippet

            // Instantiate IAsset
            IAsset asset = builder.Build();

            // Create string key
            ILine key = new LineRoot().Key("hello").Culture("en");
            // Request string
            IString value = asset.GetLine(key).GetString();
            // Print result
            Console.WriteLine(value);
        }
Esempio n. 5
0
        public static void Main(string[] args)
        {
            #region Snippet
            // Create dictionary of strings
            Dictionary <string, string> strings = new Dictionary <string, string> {
                { "en:hello", "Hello World!" }
            };

            // Create IAssetSource that adds cache
            IAssetSource assetSource_0 = new AssetCacheSource(c => c.AddResourceCache().AddStringsCache().AddCulturesCache());
            // Create IAssetSource that static reference of IAsset (string dictionary)
            IAssetSource assetSource_1 = new AssetInstanceSource(new StringAsset(strings, LineParameterPrinter.Default));

            // Create AssetBuilder
            IAssetBuilder builder = new AssetBuilder(assetSource_0, assetSource_1);
            // Instantiate IAsset
            IAsset asset = builder.Build();

            // Create string key
            ILine key = new LineRoot().Key("hello").Culture("en");
            // Request value
            IString value = asset.GetLine(key).GetString();
            // Print result
            Console.WriteLine(value);
            #endregion Snippet
        }
Esempio n. 6
0
        public void Apply(PolusShipStatus shipStatus)
        {
            if (!MapHandler.Load())
            {
                return;
            }

            MapData      map     = MapHandler.GetMap();
            PolusHandler polus   = new PolusHandler(shipStatus);
            AssetBuilder builder = new AssetBuilder(polus);

            polus.ClearTasks();
            polus.MoveToTemp();

            for (int i = 0; i < map.objs.Length; i++)
            {
                MapAsset asset   = map.objs[i];
                bool     success = builder.Build(asset);
                if (!success)
                {
                    LILogger.LogError("Failed to build " + asset.name);
                }
                else if (i % 1000 == 0)
                {
                    LILogger.LogMsg(i + " - Objects");
                }
            }

            polus.DeleteTemp();
            LILogger.LogInfo("Applied Map Data");
        }
            private void AddGlobalAssets(CancellationToken cancellationToken)
            {
                using (Logger.LogBlock(FunctionId.RemoteHostClientService_AddGlobalAssetsAsync, cancellationToken))
                {
                    var snapshotService = _workspace.Services.GetService <ISolutionChecksumService>();
                    var assetBuilder    = new AssetBuilder(_workspace.CurrentSolution);

                    foreach (var reference in _analyzerService.GetHostAnalyzerReferences())
                    {
                        var asset = assetBuilder.Build(reference, cancellationToken);
                        snapshotService.AddGlobalAsset(reference, asset, cancellationToken);
                    }
                }
            }
Esempio n. 8
0
        public async Task Missing_Analyzer_Serailization_Test()
        {
            var workspace = new AdhocWorkspace();
            var reference = new AnalyzerFileReference("missing_reference", new MissingAnalyzerLoader());

            var serializer   = new Serializer(workspace.Services);
            var trees        = new ChecksumTreeCollection();
            var assetBuilder = new AssetBuilder(trees.CreateRootTreeNode(workspace.CurrentSolution.State));

            // make sure this doesn't throw
            var assetFromFile    = assetBuilder.Build(reference, CancellationToken.None);
            var assetFromStorage = await CloneAssetAsync(serializer, assetBuilder, assetFromFile).ConfigureAwait(false);

            var assetFromStorage2 = await CloneAssetAsync(serializer, assetBuilder, assetFromStorage).ConfigureAwait(false);
        }
Esempio n. 9
0
        public async Task MetadataReference_RoundTrip_Test()
        {
            var hostServices = MefHostServices.Create(
                MefHostServices.DefaultAssemblies.Add(typeof(Host.TemporaryStorageServiceFactory.TemporaryStorageService).Assembly));

            var workspace = new AdhocWorkspace(hostServices);
            var reference = MetadataReference.CreateFromFile(typeof(object).Assembly.Location);

            var serializer   = new Serializer(workspace.Services);
            var trees        = new ChecksumTreeCollection();
            var assetBuilder = new AssetBuilder(trees.CreateRootTreeNode(workspace.CurrentSolution.State));

            var assetFromFile    = assetBuilder.Build(reference, CancellationToken.None);
            var assetFromStorage = await CloneAssetAsync(serializer, assetBuilder, assetFromFile).ConfigureAwait(false);

            var assetFromStorage2 = await CloneAssetAsync(serializer, assetBuilder, assetFromStorage).ConfigureAwait(false);
        }
Esempio n. 10
0
        private static async Task <Asset> CloneMetadataReferenceAssetAsync(Serializer serializer, AssetBuilder assetBuilder, Asset asset)
        {
            using (var stream = SerializableBytes.CreateWritableStream())
                using (var writer = new ObjectWriter(stream))
                {
                    await asset.WriteObjectToAsync(writer, CancellationToken.None).ConfigureAwait(false);

                    stream.Position = 0;
                    using (var reader = new ObjectReader(stream))
                    {
                        var recovered        = serializer.Deserialize <MetadataReference>(asset.Kind, reader, CancellationToken.None);
                        var assetFromStorage = assetBuilder.Build(recovered, CancellationToken.None);

                        Assert.Equal(asset.Checksum, assetFromStorage.Checksum);

                        return(assetFromStorage);
                    }
                }
        }
        private Asset GetOptionsAsset(Solution solution, string language, CancellationToken cancellationToken)
        {
            // TODO: we need better way to deal with options. optionSet itself is green node but
            //       it is not part of snapshot and can't save option to solution since we can't use language
            //       specific option without loading related language specific dlls
            var options = solution.Options;

            // we have cached options
            ValueTuple <OptionSet, Asset> value;

            if (_lastOptionSetPerLanguage.TryGetValue(language, out value) && value.Item1 == options)
            {
                return(value.Item2);
            }

            // otherwise, we need to build one.
            var assetBuilder = new AssetBuilder(solution);
            var asset        = assetBuilder.Build(options, language, cancellationToken);

            _lastOptionSetPerLanguage[language] = ValueTuple.Create(options, asset);
            return(asset);
        }
Esempio n. 12
0
        public static void Main(string[] args)
        {
            {
                #region Snippet_0a
                ILineFileFormat format = LineReaderMap.Default["ini"];
                #endregion Snippet_0a
            }
            {
                #region Snippet_0b
                ILineFileFormat format = IniLinesReader.Default;
                #endregion Snippet_0b
                ILineFileFormat format2a = LineReaderMap.Default["json"];
                ILineFileFormat format2b = JsonLinesReader.Default;
                ILineFileFormat format3a = LineReaderMap.Default["xml"];
                ILineFileFormat format3b = XmlLinesReader.Default;
                ILineFileFormat format4a = LineReaderMap.Default["resx"];
                ILineFileFormat format4b = ResxLinesReader.Default;
                ILineFileFormat format5a = LineReaderMap.Default["resources"];
                ILineFileFormat format5b = ResourcesLineReader.Default;
            }

            {
                #region Snippet_1a
                IEnumerable <ILine> key_lines = LineReaderMap.Default.ReadLines(
                    filename: "localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_1a
            }
            {
                #region Snippet_1b
                IEnumerable <KeyValuePair <string, IString> > string_lines = LineReaderMap.Default.ReadStringLines(
                    filename: "localization.ini",
                    lineFormat: LineFormat.Parameters,
                    throwIfNotFound: true);
                #endregion Snippet_1b
            }
            {
                #region Snippet_1c
                ILineTree tree = LineReaderMap.Default.ReadLineTree(
                    filename: "localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_1c
            }

            {
                #region Snippet_2a
                IEnumerable <ILine> key_lines_reader =
                    LineReaderMap.Default.FileReader(
                        filename: "localization.ini",
                        throwIfNotFound: true);
                #endregion Snippet_2a
            }
            {
                #region Snippet_2b
                IEnumerable <KeyValuePair <string, IString> > string_lines_reader =
                    LineReaderMap.Default.FileReaderAsStringLines(
                        filename: "localization.ini",
                        lineFormat: LineFormat.Parameters,
                        throwIfNotFound: true);
                #endregion Snippet_2b
                var lines = string_lines_reader.ToArray();
            }
            {
                #region Snippet_2c
                IEnumerable <ILineTree> tree_reader =
                    LineReaderMap.Default.FileReaderAsLineTree(
                        filename: "localization.ini",
                        throwIfNotFound: true);
                #endregion Snippet_2c
                var lines = tree_reader.ToArray();
            }

            {
                #region Snippet_3a
                Assembly            asm = typeof(LocalizationReader_Examples).Assembly;
                IEnumerable <ILine> key_lines_reader =
                    LineReaderMap.Default.EmbeddedReader(
                        assembly: asm,
                        resourceName: "docs.localization.ini",
                        throwIfNotFound: true);
                #endregion Snippet_3a
                var lines = key_lines_reader.ToArray();
            }
            {
                Assembly asm = typeof(LocalizationReader_Examples).Assembly;
                #region Snippet_3b
                IEnumerable <KeyValuePair <string, IString> > string_lines_reader =
                    LineReaderMap.Default.EmbeddedReaderAsStringLines(
                        assembly: asm,
                        resourceName: "docs.localization.ini",
                        lineFormat: LineFormat.Parameters,
                        throwIfNotFound: true);
                #endregion Snippet_3b
                var lines = string_lines_reader.ToArray();
            }
            {
                Assembly asm = typeof(LocalizationReader_Examples).Assembly;
                #region Snippet_3c
                IEnumerable <ILineTree> tree_reader =
                    LineReaderMap.Default.EmbeddedReaderAsLineTree(
                        assembly: asm,
                        resourceName: "docs.localization.ini",
                        throwIfNotFound: true);
                #endregion Snippet_3c
                var lines = tree_reader.ToArray();
            }

            {
                #region Snippet_4a
                IFileProvider       fileProvider     = new PhysicalFileProvider(Directory.GetCurrentDirectory());
                IEnumerable <ILine> key_lines_reader =
                    LineReaderMap.Default.FileProviderReader(
                        fileProvider: fileProvider,
                        filepath: "localization.ini",
                        throwIfNotFound: true);
                #endregion Snippet_4a
                var lines = key_lines_reader.ToArray();
            }
            {
                #region Snippet_4b
                IFileProvider fileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory());
                IEnumerable <KeyValuePair <string, IString> > string_lines_reader =
                    LineReaderMap.Default.FileProviderReaderAsStringLines(
                        fileProvider: fileProvider,
                        filepath: "localization.ini",
                        throwIfNotFound: true);
                #endregion Snippet_4b
                var lines = string_lines_reader.ToArray();
            }
            {
                #region Snippet_4c
                IFileProvider           fileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory());
                IEnumerable <ILineTree> tree_reader  =
                    LineReaderMap.Default.FileProviderReaderAsLineTree(
                        fileProvider: fileProvider,
                        filepath: "localization.ini",
                        throwIfNotFound: true);
                #endregion Snippet_4c
                var lines = tree_reader.ToArray();
            }

            {
                #region Snippet_5a
                using (Stream s = new FileStream("localization.ini", FileMode.Open, FileAccess.Read))
                {
                    IEnumerable <ILine> key_lines = IniLinesReader.Default.ReadLines(s);
                }
                #endregion Snippet_5a
            }
            {
                #region Snippet_5b
                using (Stream s = new FileStream("localization.ini", FileMode.Open, FileAccess.Read))
                {
                    IEnumerable <KeyValuePair <string, IString> > string_lines = IniLinesReader.Default.ReadStringLines(
                        stream: s,
                        lineFormat: LineFormat.Parameters);
                }
                #endregion Snippet_5b
            }
            {
                #region Snippet_5c
                using (Stream s = new FileStream("localization.ini", FileMode.Open, FileAccess.Read))
                {
                    ILineTree tree = IniLinesReader.Default.ReadLineTree(s);
                }
                #endregion Snippet_5c
            }


            {
                #region Snippet_6a
                string text = "Culture:en:Type:MyController:Key:Hello = Hello World!\n";
                using (TextReader tr = new StringReader(text))
                {
                    IEnumerable <ILine> key_lines = IniLinesReader.Default.ReadLines(tr);
                }
                #endregion Snippet_6a
            }
            {
                string text = "Culture:en:Type:MyController:Key:Hello = Hello World!\n";
                #region Snippet_6b
                using (TextReader tr = new StringReader(text))
                {
                    IEnumerable <KeyValuePair <string, IString> > string_lines = IniLinesReader.Default.ReadStringLines(
                        srcText: tr,
                        lineFormat: LineFormat.Parameters);
                }
                #endregion Snippet_6b
            }
            {
                string text = "Culture:en:Type:MyController:Key:Hello = Hello World!\n";
                #region Snippet_6c
                using (TextReader tr = new StringReader(text))
                {
                    ILineTree tree = IniLinesReader.Default.ReadLineTree(tr);
                }
                #endregion Snippet_6c
            }

            {
                #region Snippet_7a
                string text = "Culture:en:Type:MyController:Key:Hello = Hello World!\n";
                IEnumerable <ILine> key_lines =
                    IniLinesReader.Default.ReadString(
                        srcText: text);
                #endregion Snippet_7a
            }
            {
                string text = "Culture:en:Type:MyController:Key:Hello = Hello World!\n";
                #region Snippet_7b
                IEnumerable <KeyValuePair <string, IString> > string_lines =
                    IniLinesReader.Default.ReadStringAsStringLines(
                        srcText: text,
                        lineFormat: LineFormat.Parameters);
                #endregion Snippet_7b
            }
            {
                string text = "Culture:en:Type:MyController:Key:Hello = Hello World!\n";
                #region Snippet_7c
                ILineTree tree =
                    IniLinesReader.Default.ReadStringAsLineTree(
                        srcText: text);
                #endregion Snippet_7c
            }

            {
                #region Snippet_10a
                IAsset asset = IniLinesReader.Default.FileAsset(
                    filename: "localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_10a
            }
            {
                #region Snippet_10b
                Assembly asm   = typeof(LocalizationReader_Examples).Assembly;
                IAsset   asset = IniLinesReader.Default.EmbeddedAsset(
                    assembly: asm,
                    resourceName: "docs.localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_10b
            }
            {
                #region Snippet_10c
                IFileProvider fileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory());
                IAsset        asset        = IniLinesReader.Default.FileProviderAsset(
                    fileProvider: fileProvider,
                    filepath: "localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_10c
            }
            {
                Assembly      asm          = typeof(LocalizationReader_Examples).Assembly;
                IFileProvider fileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory());
                #region Snippet_10a2
                IAsset asset = LineReaderMap.Default.FileAsset(
                    filename: "localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_10a2
                #region Snippet_10b2
                asset = LineReaderMap.Default.EmbeddedAsset(
                    assembly: asm,
                    resourceName: "docs.localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_10b2
                #region Snippet_10c2
                asset = LineReaderMap.Default.FileProviderAsset(
                    fileProvider: fileProvider,
                    filepath: "localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_10c2
            }

            {
                #region Snippet_11a
                IAssetSource assetSource = IniLinesReader.Default.FileAssetSource(
                    filename: "localization.ini",
                    throwIfNotFound: true);
                IAssetBuilder assetBuilder = new AssetBuilder().AddSource(assetSource);
                IAsset        asset        = assetBuilder.Build();
                #endregion Snippet_11a
            }
            {
                #region Snippet_11b
                Assembly     asm         = typeof(LocalizationReader_Examples).Assembly;
                IAssetSource assetSource = IniLinesReader.Default.EmbeddedAssetSource(
                    assembly: asm,
                    resourceName: "docs.localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_11b
            }
            {
                #region Snippet_11c
                IFileProvider fileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory());
                IAssetSource  assetSource  = IniLinesReader.Default.FileProviderAssetSource(
                    fileProvider: fileProvider,
                    filepath: "localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_11c
            }
            {
                #region Snippet_11a2
                IAssetSource assetSource = LineReaderMap.Default.FileAssetSource(
                    filename: "localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_11a2
            }
            {
                Assembly asm = typeof(LocalizationReader_Examples).Assembly;
                #region Snippet_11b2
                IAssetSource assetSource = LineReaderMap.Default.EmbeddedAssetSource(
                    assembly: asm,
                    resourceName: "docs.localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_11b2
            }
            {
                IFileProvider fileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory());
                #region Snippet_11c2
                IAssetSource assetSource = LineReaderMap.Default.FileProviderAssetSource(
                    fileProvider: fileProvider,
                    filepath: "localization.ini",
                    throwIfNotFound: true);
                #endregion Snippet_11c2
            }

            {
                #region Snippet_7
                #endregion Snippet_7
            }
            {
                #region Snippet_8
                #endregion Snippet_8
            }
            {
                #region Snippet_9
                #endregion Snippet_9
            }
            {
                #region Snippet_12
                #endregion Snippet_12
            }
            {
                #region Snippet_13
                #endregion Snippet_13
            }
            {
                #region Snippet_14
                #endregion Snippet_14
            }
            {
                #region Snippet_15
                #endregion Snippet_15
            }
            {
                #region Snippet_16
                #endregion Snippet_16
            }
            {
                #region Snippet_17
                #endregion Snippet_17
            }
            {
                #region Snippet_18
                #endregion Snippet_18
            }
            {
                #region Snippet_30a
                // Create writer
                ILineReader format = new ExtFileFormatReader();

                // Clone formats
                LineFileFormatMap formats = LineReaderMap.Default.Clone();
                // Add to clone
                formats.Add(format);

                // Or if in deploying application project, format can be added to the global singleton
                (LineReaderMap.Default as IDictionary <string, ILineFileFormat>).Add(format);
                #endregion Snippet_30a
            }
        }
 private static Asset BuildAsset(AssetBuilder builder, string kind, object value)
 {
     switch (kind)
     {
         case WellKnownChecksumObjects.AnalyzerReference:
             return builder.Build((AnalyzerReference)value, CancellationToken.None);
         case WellKnownChecksumObjects.MetadataReference:
             return builder.Build((MetadataReference)value, CancellationToken.None);
         default:
             throw ExceptionUtilities.UnexpectedValue(kind);
     }
 }
        public void EmptyAssetChecksumTest()
        {
            var document = new AdhocWorkspace().CurrentSolution.AddProject("empty", "empty", LanguageNames.CSharp).AddDocument("empty", SourceText.From(""));
            var assetBuilder = new AssetBuilder(document.Project.Solution);

            var source = assetBuilder.Build(document.State, document.GetTextAsync().Result, CancellationToken.None);
            var metadata = assetBuilder.Build(new MissingMetadataReference(), CancellationToken.None);
            var analyzer = assetBuilder.Build(new AnalyzerFileReference("missing", new MissingAnalyzerLoader()), CancellationToken.None);

            Assert.NotEqual(source.Checksum, metadata.Checksum);
            Assert.NotEqual(source.Checksum, analyzer.Checksum);
            Assert.NotEqual(metadata.Checksum, analyzer.Checksum);
        }
            private void AddGlobalAssets(CancellationToken cancellationToken)
            {
                using (Logger.LogBlock(FunctionId.RemoteHostClientService_AddGlobalAssetsAsync, cancellationToken))
                {
                    var snapshotService = _workspace.Services.GetService<ISolutionChecksumService>();
                    var assetBuilder = new AssetBuilder(_workspace.CurrentSolution);

                    foreach (var reference in _analyzerService.GetHostAnalyzerReferences())
                    {
                        var asset = assetBuilder.Build(reference, cancellationToken);
                        snapshotService.AddGlobalAsset(reference, asset, cancellationToken);
                    }
                }
            }
Esempio n. 16
0
        private static async Task<Asset> CloneMetadataReferenceAssetAsync(Serializer serializer, AssetBuilder assetBuilder, Asset asset)
        {
            using (var stream = SerializableBytes.CreateWritableStream())
            using (var writer = new ObjectWriter(stream))
            {
                await asset.WriteObjectToAsync(writer, CancellationToken.None).ConfigureAwait(false);

                stream.Position = 0;
                using (var reader = new ObjectReader(stream))
                {
                    var recovered = serializer.Deserialize<MetadataReference>(asset.Kind, reader, CancellationToken.None);
                    var assetFromStorage = assetBuilder.Build(recovered, CancellationToken.None);

                    Assert.Equal(asset.Checksum, assetFromStorage.Checksum);

                    return assetFromStorage;
                }
            }
        }
Esempio n. 17
0
        public async Task MetadataReference_RoundTrip_Test()
        {
            var hostServices = MefHostServices.Create(
                MefHostServices.DefaultAssemblies.Add(typeof(Host.TemporaryStorageServiceFactory.TemporaryStorageService).Assembly));

            var workspace = new AdhocWorkspace(hostServices);
            var reference = MetadataReference.CreateFromFile(typeof(object).Assembly.Location);

            var serializer = new Serializer(workspace.Services);
            var trees = new ChecksumTreeCollection();
            var assetBuilder = new AssetBuilder(trees.CreateRootTreeNode(workspace.CurrentSolution.State));

            var assetFromFile = assetBuilder.Build(reference, CancellationToken.None);
            var assetFromStorage = await CloneMetadataReferenceAssetAsync(serializer, assetBuilder, assetFromFile).ConfigureAwait(false);
            var assetFromStorage2 = await CloneMetadataReferenceAssetAsync(serializer, assetBuilder, assetFromStorage).ConfigureAwait(false);
        }
        /// <summary>
        /// 编译FireML
        /// </summary>
        public FireMLRoot CompileFireML()
        {
            FireMLRoot root = new FireMLRoot();

            #region 读取Asset
            AssetBuilder assetBuilder = new AssetBuilder(this);
            assetBuilder.Build(assetFiles, root);
            #endregion

            #region 构造AST
            ASTBuilder astBuilder = new ASTBuilder(this);
            astBuilder.Build(plotFiles, root);
            #endregion

            #region AST合法性检查
            ASTChecker astChecker = new ASTChecker(this);
            astChecker.Check(root);
            #endregion

            #region 生成ID号
            IDGenerator idGenerator = new IDGenerator();
            idGenerator.Generate(root);
            #endregion

            #region 资源存在性检查
            //ContentChecker contentChecker = new ContentChecker(this);
            //contentChecker.Check(root);
            #endregion

            if (errorList.Count > 0)
                return null;
            else
                return root;
        }
        public async Task Missing_Metadata_Serailization_Test()
        {
            var workspace = new AdhocWorkspace();
            var reference = new MissingMetadataReference();

            var serializer = new Serializer(workspace.Services);
            var trees = new ChecksumTreeCollection();
            var assetBuilder = new AssetBuilder(trees.CreateRootTreeNode(workspace.CurrentSolution.State));

            // make sure this doesn't throw
            var assetFromFile = assetBuilder.Build(reference, CancellationToken.None);
            var assetFromStorage = await CloneAssetAsync(serializer, assetBuilder, assetFromFile).ConfigureAwait(false);
            var assetFromStorage2 = await CloneAssetAsync(serializer, assetBuilder, assetFromStorage).ConfigureAwait(false);
        }
Esempio n. 20
0
        private static async Task VerifyOptionSetsAsync(Workspace workspace, string language)
        {
            var assetBuilder = new AssetBuilder(workspace.CurrentSolution);
            var serializer = new Serializer(workspace.Services);

            var asset = assetBuilder.Build(workspace.Options, language, CancellationToken.None);

            using (var stream = SerializableBytes.CreateWritableStream())
            using (var writer = new ObjectWriter(stream))
            {
                await asset.WriteObjectToAsync(writer, CancellationToken.None).ConfigureAwait(false);

                stream.Position = 0;
                using (var reader = new ObjectReader(stream))
                {
                    var recovered = serializer.Deserialize<OptionSet>(asset.Kind, reader, CancellationToken.None);
                    var assetFromStorage = assetBuilder.Build(recovered, language, CancellationToken.None);

                    Assert.Equal(asset.Checksum, assetFromStorage.Checksum);

                    // option should be exactly same
                    Assert.Equal(0, recovered.GetChangedOptions(workspace.Options).Count());
                }
            }
        }
        public async Task Missing_Analyzer_Serailization_Desktop_Test()
        {
            var hostServices = MefHostServices.Create(
                MefHostServices.DefaultAssemblies.Add(typeof(Host.TemporaryStorageServiceFactory.TemporaryStorageService).Assembly));

            var workspace = new AdhocWorkspace(hostServices);
            var reference = new AnalyzerFileReference("missing_reference", new MissingAnalyzerLoader());

            var serializer = new Serializer(workspace.Services);
            var trees = new ChecksumTreeCollection();
            var assetBuilder = new AssetBuilder(trees.CreateRootTreeNode(workspace.CurrentSolution.State));

            // make sure this doesn't throw
            var assetFromFile = assetBuilder.Build(reference, CancellationToken.None);
            var assetFromStorage = await CloneAssetAsync(serializer, assetBuilder, assetFromFile).ConfigureAwait(false);
            var assetFromStorage2 = await CloneAssetAsync(serializer, assetBuilder, assetFromStorage).ConfigureAwait(false);
        }
        private Asset GetOptionsAsset(Solution solution, string language, CancellationToken cancellationToken)
        {
            // TODO: we need better way to deal with options. optionSet itself is green node but
            //       it is not part of snapshot and can't save option to solution since we can't use language
            //       specific option without loading related language specific dlls
            var options = solution.Options;

            // we have cached options
            ValueTuple<OptionSet, Asset> value;
            if (_lastOptionSetPerLanguage.TryGetValue(language, out value) && value.Item1 == options)
            {
                return value.Item2;
            }

            // otherwise, we need to build one.
            var assetBuilder = new AssetBuilder(solution);
            var asset = assetBuilder.Build(options, language, cancellationToken);

            _lastOptionSetPerLanguage[language] = ValueTuple.Create(options, asset);
            return asset;
        }
Esempio n. 23
0
 public static Asset Default(AssetBuilder builder) => builder.Build();