internal ResolveNuGetPackageAssets(FileExists fileExists, TryGetRuntimeVersion tryGetRuntimeVersion)
            : this()
        {
            if (fileExists != null)
            {
                _fileExists = fileExists;
            }

            if (tryGetRuntimeVersion != null)
            {
                _tryGetRuntimeVersion = tryGetRuntimeVersion;
            }

            _reportExceptionsToMSBuildLogger = false;
        }
        internal PrereleaseResolveNuGetPackageAssets(DirectoryExists directoryExists, FileExists fileExists, TryGetRuntimeVersion tryGetRuntimeVersion)
            : this()
        {
            if (directoryExists != null)
            {
                _directoryExists = directoryExists;
            }

            if (fileExists != null)
            {
                _fileExists = fileExists;
            }

            if (tryGetRuntimeVersion != null)
            {
                _tryGetRuntimeVersion = tryGetRuntimeVersion;
            }
        }
Esempio n. 3
0
        internal PrereleaseResolveNuGetPackageAssets(DirectoryExists directoryExists, FileExists fileExists, TryGetRuntimeVersion tryGetRuntimeVersion)
            : this()
        {
            if (directoryExists != null)
            {
                _directoryExists = directoryExists;
            }

            if (fileExists != null)
            {
                _fileExists = fileExists;
            }

            if (tryGetRuntimeVersion != null)
            {
                _tryGetRuntimeVersion = tryGetRuntimeVersion;
            }
        }
        public static void BogusWinMDDoesNotSetImplementation()
        {
            string imageRuntimeVersion = "BogusRuntime 1.4;C1R v4.0.30319";
            TryGetRuntimeVersion tryGetRuntimeVersion = p => imageRuntimeVersion;
            var result = NuGetTestHelpers.ResolvePackagesWithJsonFileContents(
                Json.Json.nativeWinMD,
                targetMoniker: ".NETCore,Version=v5.0",
                runtimeIdentifier: "win10-x86",
                tryGetRuntimeVersion: tryGetRuntimeVersion);

            var winmd = result.CopyLocalItems.FirstOrDefault(c =>
                                                             Path.GetExtension(c.ItemSpec).Equals(".winmd", StringComparison.OrdinalIgnoreCase));

            Assert.NotNull(winmd);
            Assert.Equal(imageRuntimeVersion, winmd.GetMetadata("ImageRuntime"));
            Assert.True(string.IsNullOrEmpty(winmd.GetMetadata("WinMDFile")));
            Assert.True(string.IsNullOrEmpty(winmd.GetMetadata("WinMDFileType")));
            Assert.True(string.IsNullOrEmpty(winmd.GetMetadata("Implementation")), "implementation should not be set for bogus winmd");
        }
        internal PrereleaseResolveNuGetPackageAssets(DirectoryExists directoryExists, FileExists fileExists, TryGetRuntimeVersion tryGetRuntimeVersion)
            : this()
        {
            if (directoryExists != null)
            {
                _directoryExists = directoryExists;
            }

            if (fileExists != null)
            {
                _fileExists = fileExists;
            }

            if (tryGetRuntimeVersion != null)
            {
                _tryGetRuntimeVersion = tryGetRuntimeVersion;
            }

            _reportExceptionsToMSBuildLogger = false;
        }
        internal PrereleaseResolveNuGetPackageAssets(DirectoryExists directoryExists, FileExists fileExists, TryGetRuntimeVersion tryGetRuntimeVersion)
            : this()
        {
            if (directoryExists != null)
            {
                _directoryExists = directoryExists;
            }

            if (fileExists != null)
            {
                _fileExists = fileExists;
            }

            if (tryGetRuntimeVersion != null)
            {
                _tryGetRuntimeVersion = tryGetRuntimeVersion;
            }

            _reportExceptionsToMSBuildLogger = false;
        }
        public static void NativeWinMDSetsMetadata()
        {
            string imageRuntimeVersion = "WindowsRuntime 1.3";
            TryGetRuntimeVersion tryGetRuntimeVersion = p => imageRuntimeVersion;
            var result = NuGetTestHelpers.ResolvePackagesWithJsonFileContents(
                Json.Json.nativeWinMD,
                targetMoniker: ".NETCore,Version=v5.0",
                runtimeIdentifier: "win10-x86",
                tryGetRuntimeVersion: tryGetRuntimeVersion);

            var winmd = result.CopyLocalItems.FirstOrDefault(c =>
                                                             Path.GetExtension(c.ItemSpec).Equals(".winmd", StringComparison.OrdinalIgnoreCase));

            Assert.NotNull(winmd);
            Assert.Equal(imageRuntimeVersion, winmd.GetMetadata("ImageRuntime"));
            Assert.Equal("true", winmd.GetMetadata("WinMDFile"));
            Assert.Equal("Native", winmd.GetMetadata("WinMDFileType"));
            Assert.False(string.IsNullOrEmpty(winmd.GetMetadata("Implementation")), "implementation should be set for native winmd");
            Assert.Equal(Path.GetFileNameWithoutExtension(winmd.ItemSpec) + ".dll", winmd.GetMetadata("Implementation"), StringComparer.OrdinalIgnoreCase);
        }
Esempio n. 8
0
        public static ResolvePackagesResult ResolvePackagesWithJsonFileContents(
            string projectLockJsonFileContents,
            string targetMoniker,
            string runtimeIdentifier,
            bool isLockFileProjectJsonBased           = true,
            string projectLanguage                    = null,
            bool allowFallbackOnTargetSelection       = false,
            TryGetRuntimeVersion tryGetRuntimeVersion = null,
            bool includeFrameworkReferences           = true,
            string projectJsonFileContents            = null,
            bool createTemporaryFolderForPackages     = true)
        {
            var rootDirectory = new TempRoot();

            using (rootDirectory)
            {
                var projectDirectory = rootDirectory.CreateDirectory();

                var projectLockJsonFile = projectDirectory.CreateFile(isLockFileProjectJsonBased ? "project.lock.json" : "project.assets.json");
                projectLockJsonFile.WriteAllText(projectLockJsonFileContents);

                if (projectJsonFileContents != null)
                {
                    var projectJsonFile = projectDirectory.CreateFile("project.json");
                    projectJsonFile.WriteAllText(projectJsonFileContents);
                }

                var filesInPackages = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
                DisposableDirectory packagesDirectory = null;

                if (createTemporaryFolderForPackages)
                {
                    packagesDirectory = rootDirectory.CreateDirectory();

                    foreach (var fileInPackage in GetFakeFileNamesFromPackages(projectLockJsonFileContents, packagesDirectory.Path))
                    {
                        filesInPackages.Add(fileInPackage);
                    }
                }
                else
                {
                    // We will assume there is a location in the lock file we're using
                    var lockFile      = JObject.Parse(projectLockJsonFileContents);
                    var firstLocation = ((JObject)lockFile["packageFolders"]).Properties().First().Name;

                    foreach (var fileInPackage in GetFakeFileNamesFromPackages(projectLockJsonFileContents, firstLocation))
                    {
                        filesInPackages.Add(fileInPackage);
                    }
                }

                // Don't require the packages be restored on the machine
                ResolveNuGetPackageAssets task = null;
                FileExists fileExists          = path => filesInPackages.Contains(path) || File.Exists(path);

                task = new ResolveNuGetPackageAssets(fileExists, tryGetRuntimeVersion);
                var sw = new StringWriter();
                task.BuildEngine = new MockBuildEngine(sw);

                task.AllowFallbackOnTargetSelection = allowFallbackOnTargetSelection;
                task.IncludeFrameworkReferences     = includeFrameworkReferences;
                task.NuGetPackagesDirectory         = packagesDirectory?.Path;
                task.RuntimeIdentifier = runtimeIdentifier;
                task.ProjectLockFile   = projectLockJsonFile.Path;
                task.ProjectLanguage   = projectLanguage;
                task.TargetMonikers    = new ITaskItem[] { new TaskItem(targetMoniker) };

                // When we create the task for unit-testing purposes, the constructor sets an internal bit which should always
                // cause task.Execute to throw.
                Assert.True(task.Execute());

                var analyzers          = task.ResolvedAnalyzers;
                var copyLocalItems     = task.ResolvedCopyLocalItems;
                var references         = task.ResolvedReferences;
                var referencedPackages = task.ReferencedPackages;

                return(new ResolvePackagesResult(analyzers, copyLocalItems, references, referencedPackages, rootDirectory.Root));
            }
        }