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; } }
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; }
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); }
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)); } }