public TestMetadataReferenceInfo( MemoryStream emitStream, Compilation compilation, TestMetadataReference metadataReference, string fullPath ) { _emitStream = emitStream; _peReader = new PEReader(emitStream); Compilation = compilation; MetadataReference = metadataReference; var metadataReader = _peReader.GetMetadataReader(); var moduleDefinition = metadataReader.GetModuleDefinition(); MetadataReferenceInfo = new MetadataReferenceInfo( _peReader.PEHeaders.CoffHeader.TimeDateStamp, _peReader.PEHeaders.PEHeader.SizeOfImage, PathUtilities.GetFileName(fullPath), metadataReader.GetGuid(moduleDefinition.Mvid), metadataReference.Properties.Aliases, metadataReference.Properties.Kind, metadataReference.Properties.EmbedInteropTypes ); }
public static TestMetadataReferenceInfo Create(Compilation compilation, string fullPath, EmitOptions emitOptions) { var emitStream = compilation.EmitToStream(emitOptions); var metadata = AssemblyMetadata.CreateFromStream(emitStream); var metadataReference = new TestMetadataReference(metadata, fullPath: fullPath); return(new TestMetadataReferenceInfo( emitStream, compilation, metadataReference, fullPath)); }
public void Create_MetadataReferences() { var version = VersionStamp.Default; var metadataReference = new TestMetadataReference(); var info1 = ProjectInfo.Create( ProjectId.CreateNewId(), version, "proj", "assembly", "C#", metadataReferences: new[] { metadataReference } ); Assert.Same( metadataReference, ((ImmutableArray <MetadataReference>)info1.MetadataReferences).Single() ); var info2 = ProjectInfo.Create( ProjectId.CreateNewId(), version, "proj", "assembly", "C#" ); Assert.True(((ImmutableArray <MetadataReference>)info2.MetadataReferences).IsEmpty); var info3 = ProjectInfo.Create( ProjectId.CreateNewId(), version, "proj", "assembly", "C#", metadataReferences: new MetadataReference[0] ); Assert.True(((ImmutableArray <MetadataReference>)info3.MetadataReferences).IsEmpty); var info4 = ProjectInfo.Create( ProjectId.CreateNewId(), version, "proj", "assembly", "C#", metadataReferences: ImmutableArray <MetadataReference> .Empty ); Assert.True(((ImmutableArray <MetadataReference>)info4.MetadataReferences).IsEmpty); }
public void Create_Errors_DuplicateItems() { var pid = ProjectId.CreateNewId(); var documentInfo = DocumentInfo.Create(DocumentId.CreateNewId(pid), "doc"); Assert.Throws <ArgumentException>("documents[1]", () => ProjectInfo.Create(pid, VersionStamp.Default, "proj", "assembly", "C#", documents: new[] { documentInfo, documentInfo })); Assert.Throws <ArgumentNullException>(() => ProjectInfo.Create(pid, VersionStamp.Default, name: "Goo", assemblyName: "Bar", language: "C#", additionalDocuments: new DocumentInfo[] { null })); Assert.Throws <ArgumentException>("additionalDocuments[1]", () => ProjectInfo.Create(pid, VersionStamp.Default, "proj", "assembly", "C#", additionalDocuments: new[] { documentInfo, documentInfo })); Assert.Throws <ArgumentNullException>(() => ProjectInfo.Create(pid, VersionStamp.Default, name: "Goo", assemblyName: "Bar", language: "C#", projectReferences: new ProjectReference[] { null })); var projectReference = new ProjectReference(ProjectId.CreateNewId()); Assert.Throws <ArgumentException>("projectReferences[1]", () => ProjectInfo.Create(pid, VersionStamp.Default, "proj", "assembly", "C#", projectReferences: new[] { projectReference, projectReference })); Assert.Throws <ArgumentNullException>("analyzerReferences[0]", () => ProjectInfo.Create(pid, VersionStamp.Default, name: "Goo", assemblyName: "Bar", language: "C#", analyzerReferences: new AnalyzerReference[] { null })); var analyzerReference = new TestAnalyzerReference(); Assert.Throws <ArgumentException>("analyzerReferences[1]", () => ProjectInfo.Create(pid, VersionStamp.Default, "proj", "assembly", "C#", analyzerReferences: new[] { analyzerReference, analyzerReference })); Assert.Throws <ArgumentNullException>(() => ProjectInfo.Create(pid, VersionStamp.Default, name: "Goo", assemblyName: "Bar", language: "C#", metadataReferences: new MetadataReference[] { null })); var metadataReference = new TestMetadataReference(); Assert.Throws <ArgumentException>("metadataReferences[1]", () => ProjectInfo.Create(pid, VersionStamp.Default, "proj", "assembly", "C#", metadataReferences: new[] { metadataReference, metadataReference })); }