public IEnumerable <PackageVerifierIssue> Validate(PackageAnalysisContext context) { if (context.Metadata.IsDotNetToolPackage()) { yield break; } AssemblyAttributesDataHelper.SetAssemblyAttributesData(context); foreach (var assemblyData in context.AssemblyData) { if (!HasServicingAttribute(assemblyData.Value.AssemblyAttributes)) { yield return(PackageIssueFactory.AssemblyMissingServicingAttribute(assemblyData.Key)); } } }
public IEnumerable <PackageVerifierIssue> Validate(IPackageRepository packageRepo, IPackage package, IPackageVerifierLogger logger) { foreach (IPackageFile currentFile in package.GetFiles()) { string extension = Path.GetExtension(currentFile.Path); if (extension.Equals(".dll", StringComparison.OrdinalIgnoreCase) || extension.Equals(".exe", StringComparison.OrdinalIgnoreCase)) { string assemblyPath = Path.ChangeExtension(Path.Combine(Path.GetTempPath(), Path.GetTempFileName()), extension); try { using (Stream packageFileStream = currentFile.GetStream()) { var _assemblyBytes = new byte[packageFileStream.Length]; packageFileStream.Read(_assemblyBytes, 0, _assemblyBytes.Length); using (var fileStream = new FileStream(assemblyPath, FileMode.Create)) { packageFileStream.Seek(0, SeekOrigin.Begin); packageFileStream.CopyTo(fileStream); fileStream.Flush(true); } if (AssemblyHelpers.IsAssemblyManaged(assemblyPath)) { var assemblyDefinition = AssemblyDefinition.ReadAssembly(assemblyPath); var asmAttrs = assemblyDefinition.CustomAttributes; if (!HasServicingAttribute(asmAttrs)) { yield return(PackageIssueFactory.AssemblyMissingServicingAttribute(currentFile.Path)); } } } } finally { if (File.Exists(assemblyPath)) { File.Delete(assemblyPath); } } } } yield break; }