Beispiel #1
0
    public async Task <string> CachePackageAsync(string packageName, string version, bool deleteAfter = true)
    {
        var temporaryFolder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());

        Directory.CreateDirectory(temporaryFolder);

        _cmdHelper.RunCmdAndGetOutput("dotnet new console -lang c#", temporaryFolder);
        _cmdHelper.RunCmdAndGetOutput($"dotnet add package {packageName} --version {version}", temporaryFolder);

        if (deleteAfter)
        {
            Directory.Delete(temporaryFolder, true);
        }

        return(temporaryFolder);
    }
Beispiel #2
0
    public async Task <string> GetCachedDllFilePathAsync(string name, string type, string version = null, bool includePreReleases = false, bool includeDependencies = false)
    {
        if (type == SourceCodeTypes.Template)
        {
            name = TemplateNugetPackageInfoProvider.GetNugetPackageName(name);
        }

        version ??= await GetLatestVersionAsync(name, includePreReleases);

        var localDllFolder = Path.Combine(
            GetLocalNugetCachePath(),
            name,
            version,
            "lib");

        if (!Directory.Exists(localDllFolder) ||
            (includeDependencies && !Directory.GetFiles(localDllFolder, $"*Volo.Abp.Studio.ModuleInstaller.dll", SearchOption.AllDirectories).Any()))
        {
            if (includeDependencies)
            {
                var temporaryFolder = await _nugetPackageCacheManager.CachePackageAsync(name, version, false);

                var outputFolder = Path.GetDirectoryName(
                    Directory
                    .GetFiles(localDllFolder, $"*{name}.dll", SearchOption.AllDirectories)
                    .First()
                    );

                _cmdHelper.RunCmdAndGetOutput($"dotnet build -o {outputFolder}", temporaryFolder);

                Directory.Delete(temporaryFolder, true);
            }
            else
            {
                await _nugetPackageCacheManager.CachePackageAsync(name, version);
            }
        }

        if (!Directory.Exists(localDllFolder))
        {
            return(null);
        }

        return(Directory.GetFiles(localDllFolder, $"{name}.dll", SearchOption.AllDirectories).FirstOrDefault());
    }